2013-06-19 30 views
9

Bir HTTP 403'ü bir WebAPI yönteminden nasıl döndürebilirim? Ben HttpStatusCode.Forbidden ile HttpResponseException atma denedim ve ben WebAPI yönteminde HTTP 403 döndürüyor

return request.CreateErrorResponse(HttpStatusCode.Forbidden, pEx); 

denedim Ne tanesi çalışma. Her iki ALWAY, bir HTTP 200 döndürür. Ne eksik? Basit bir şey olmalı ama göremiyorum.

+0

Çözümü burada denediniz mi? http://stackoverflow.com/a/10658604/163495 – Richard

+0

http://stackoverflow.com/questions/17081826/net-web-api-throw-exception-return-response-return-error-response-for-404- 400-R – SimSimY

+2

Daha fazla kod paylaşabilir miydiniz? Sorununuzu yeniden üretemiyoruz –

cevap

3

Yönlendirme yapılandırmanızda bir sorun olabilir. Aşağıda çalışan bir örnek. Onu kontrol cihazınıza koyun ve işe yarayıp yaramadığını görün. Aksi halde, bir teşhis aracıyla (örn. Cobisi Yönlendirme Yardımcısı) yönlendirmeyi kontrol edin.

public HttpResponseMessage GetSomeString(int id) 
{ 
    // This method is not allowed! 
    return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "This method is not allowed!"); 
} 
+1

Teoman, işe yaramaz. Garip, DotNetOpenAuth ile bir çeşit etkileşim gibi görünüyor. Web api, DotNetOpenAuth ile güvenli bir uç nokta. DotNetOpenAuth doğrulamadan geçmeden yöntemimi çağırırsam, 403 elde ederim. Ancak, DotNetOpenAuth doğrulamasını geçerek ararsam ve verificatoin başarısız olursa (403 ile dönmek istediğim durum), aynı satır önerdiğin kodun çalışması, ne olursa olsun 200 tane geri alırım. Yani bir dotnetopenauth etiketi ile yeniden göndermek zorunda sanırım. –

+3

HttpResponseMessage dize – user3953989

+0

için geçersiz döküm alma geçersiz dizgiyi dize ile nasıl düzeltebilir? – GreyCloud