2016-04-06 11 views
0

Benim sorun gelir parametresinde özel bir karaktere sahiptir.WebAPI 2 GET Bir webapi2 (tümü doğru çalıştığından, normal karakteri ile) <strong>özel kömürü</strong> olan bir dize parametresi ile</strong> GET çağırır <strong>zaman

angularjs

this.getByContactValue = function (contactValue) { 
     return $http.get("/api/subjects/"+ contactValue+ "/ContactValue"); 
    } 

C#

[Route("api/subjects/{contactValue}/ContactValue")] 
public IEnumerable<Subject> GetByContactValue(string contactValue) 
{ 
    return repository.GetByContactValue(contactValue); 
} 

yanıt 404 hata olup. bu şekilde

this.getByContactValue = function (contactValue) { 
     var request = $http({ 
      method: "get", 
      url: "/api/subjects/ContactValue", //modified the route in c# controller 
      data: contactValue 
     }); 
     return request; 
    } 

isteği değiştirmeye de çalıştı Ama hata aynıdır.

Webapi'yi çağırmanın en iyi yolu hangisidir? Sonunda bu şekilde çözüldü

[Route("api/subjects/ContactValue?contactValue={contactValue}")] 
public IEnumerable<Subject> GetByContactValue(string contactValue) 
{ 
    return repository.GetByContactValue(contactValue); 
} 
+0

iyi yolu geçmek olduğunu ettik ya querystring ya da formdaki parametreler. Hatanın oluştuğu verileri sağlayabilir misiniz? – SamGhatak

+0

Olası http://stackoverflow.com/questions/14359305/mvc-web-api-routing-fails-when-url-contains-encoded-ampersand çoğaltması ve –

cevap

2

Sen

$http({ 
    url: "/api/subjects/ContactValue", 
    method: "GET", 
    params: {contactValue: contactValue} 
}); 

güncelleme eylem olarak sorgu dizeleri veri aktarmak için

[Route("api/subjects/ContactValue")] 
public IEnumerable<Subject> GetByContactValue([FromUri]string contactValue) 
{         
    return repository.GetByContactValue(contactValue); 
} 
+1

Bu şekilde bu hatayı alıyorum - 'Rota şablonu başlatılamıyor '/' veya '~' karakteri ile ve '?' character.' Denetleyicide parametrenin değerini belirtmek zorunda mıyım? – lpernice

İlgili konular