WCF DESTEK çağrısında bir hata giderilirse, istenen kaynak gibi bulunamazsa, OperationContract yöntemimde HTTP yanıt koduyla (örneğin, HTTP 404 gibi bir değere ayarlayarak) nasıl oynayabilirim?Özel bir HTTP durum kodunu WCF REST yönteminden nasıl döndürebilirim?
cevap
erişebileceğiniz bir WebOperationContext
vardır ve ayarlanabilir bir StatusCode
özelliğine sahiptir tip OutgoingWebResponseContext
bir OutgoingResponse
özelliğine sahiptir.
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
Bu, WCF Data Services - Servis İşlemleri içinde çalışır mı? Şansım olmadı, belirlediğim StatusCode başka bir şey tarafından kondu. Yani tüm HTTP POST isteklerinde, 201'e ayarladığımdan vb. – RyBolt
Benim durumumda çalışmıyor, durumun üzerine yazılıyor. Ancak, bir 'WebFaultException' atmak işe yarıyor gibi görünüyor. –
404 için 404 için durum kodu ve bir çağrı ile bir durum açıklamasına ayarlayacaktır SetStatusAsNotFound (string mesaj) denilen WebOperationContext.Current.OutgoingResponse üzerine yöntemle inşa yoktur.
Ayrıca, SetStatusAsCreated (Uri konumu), durum kodunu 201 ve konum üstbilgisini tek bir aramayla ayarlayacağınızı unutmayın.
Bu tercih edilen cevapta görüntülenen yönteme göre tercih edilir mi? – crush
bir sebebi vücudu dönmek gerekirse o zaman başlığında durum açıklamasına görmek istiyorsanız Örneğin WebFaultException
bir göz
throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest);
Statik WebOperationContext.Current –
'u kullanmayacağımızdan beri bunu kabul ettiğimden daha çok beğeniyorum. Bu durumun yalnızca şu andan itibaren geçerli olduğunu unutmayın: http://msdn.microsoft.com/en-us/library/dd989924.aspx – sebagomez
hmm, .NET 4.5.1'de bu durum benim için durum kodunu ayarlamıyor, hala 200 tane alıyorum. jsonp kullanıyorum, callback'i (javascript'te) çağırıyor ve mesajımı ve durum kodumu iletiyor tamsayı. – Shavais
, DİNLENME yöntemi dönmek emin olmalısınız var Aşağıdaki gibi Catch() bölümünden null: WCF Veri Hizmetleri için benim için çalışmadı bu aşağıdaki gibi:
catch (ArgumentException ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
return null;
}
Bu benim için de işe yaramadı, hala bir 200 elde ediyorum. WebHttpBinding kullanarak crossDomainScriptAccessEnabled = "true" ve varsayılan gövde stili sarılmış ve varsayılan bir çıkış biçimi json ile webHttp bir son nokta davranışı kullanıyorum. ama bu önemli değil, değil mi? – Shavais
. Bunun yerine, Data Services durumunda DataServiceException'ı kullanabilirsiniz. Aşağıdaki yazıyı yararlı buldu. http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de
Bu benim için de işe yaramıyor, başka hiçbir yararlı bilgi ve hiçbir cevap gövdesi ile sadece 400 Kötü İstek aldım. – Shavais
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());
ref: Bu varsayalım kontrole https://social.msdn.microsoft.com/Forums/en-US/f6671de3-34ce-4b70-9a77-39ecf5d1b9c3/weboperationcontext-http-statuses-and-exceptions?forum=wcf
- 1. Wcf özel durum yönetimi
- 2. Java'da HTTP durum kodunu metne nasıl dönüştürürüm?
- 3. WCF REST
- 4. http durum kodunu XXX.X olarak ayarlayın.
- 5. Vim komut dosyasındaki bir Perl yönteminden değerleri nasıl döndürebilirim?
- 6. C# MVC Başarılı Http Durum Kodunu Belirle
- 7. RestKit: Bir istek başarısız olduğunda HTTP durum kodunu alma
- 8. Durum kodunu Axios'daki bir http hatasından nasıl edinebilirim?
- 9. Gece durum kontrolünü kullanarak http durum kodunu kontrol edin
- 10. RestClientException oluşturulduğunda HTTP durum kodunu ve yanıt gövdesini nasıl alırım?
- 11. Belirli http durum kodlarını geri döngüde uzak bir yöntemden nasıl döndürebilirim?
- 12. IErrorHandler kullanarak WCF özel durum işleme
- 13. Özel durum yükseltildiğinde Python'da çıkış kodunu ayarlama
- 14. WCF REST 4.0
- 15. Yaylı Interceptor'da http yanıtı durum kodunu nasıl kontrol edebilirim?
- 16. WCF Özel Http Proxy Kimlik Doğrulaması
- 17. WCF REST listesi gelen isteklerde HTTP üstbilgileri listesi
- 18. HTTP Yanıt Kodunu & Bir ASMX JSON Hizmetinde Özel Durum Atma Kurabilir miyim?
- 19. HTTP Durum Kodunu curl_multi kullanarak birden çok URL'den mi alıyorsunuz?
- 20. HTTP WCF hizmetine POST
- 21. Durum kodunu ayarlama on http.ResponseWriter
- 22. Jeton isteğini reddederken OWIN/OAuth HTTP durum kodunu özelleştirme
- 23. MSIE 8 neden 12150 HTTP durum kodunu bildiriyor?
- 24. HTTP Durum Kodunu Selenium WebDriver C Başına Almak #
- 25. WCF 4 REST hizmeti bir StatusDescription döndüremiyor, yalnızca StatusCode
- 26. REST modunda WCF servisi nasıl tüketilir?
- 27. Verileri bu özel şekilde nasıl döndürebilirim
- 28. Özel bir özel durum döndürme
- 29. Karmaşık nesneleri bir WCF Rest Hizmeti'ne aktarma
- 30. Bir REST isteğinin HTTP yöntemi nasıl alınır?
Tamam tüm cevapları servis uygulaması haline getirdiler. Ya tamamen geçersiz uri geçirirlerse? Hizmetinizdeki tüm beklenmedik isabetler için 404'ü nasıl sağladığınızı düşünüyorsunuz? –