2015-04-16 22 views
12

içine atarsınız ASP 5. bir api denetleyicisi yazıyorum Hizmete geçirilen parametreler yanlış ise kötü bir istek kodu özel durumu döndürmek istiyorum. WebAPI mevcut sürümünde yapardım:Nasıl HttpResponseException ASP 5 (vnext)

throw new HttpResponseException(HttpStatusCode.BadRequest); 

Ancak HttpResponseException ASP 5 çıkarıldığını System.Web, bir parçasıdır ve bu nedenle ben artık başlatamazsınız.

VNext'te bunu yapmanın uygun yolu nedir?

+1

http://www.strathweb.com/2015/01/migrating-asp-net-web-api-mvc-6-exploring-web-api-compatibility bir göz atın -shim /. – DWright

cevap

8

sorunuza gelince, kullanabileceğiniz bağlantı noktaları ileriye MVC 6. içine HttpResponseException (ve diğer birçok özellik) (that article için bağlantıdan DWright sayesinde.)

O MVC-6 gibi görünüyor WebApiCompatibilityShim Bunu yapmanın bir yolu, yönteminizden bir IActionResponse döndürmek ve daha sonra bir BadRequestResult döndüren Microsoft.AspNet.Mvc.Controller sınıfı bir yöntem olan HttpBadRequest() çağrı, yanıtı 400 durumuna almak için en iyi yol olduğuna inanıyorum.

Controller sınıfının diğer yanıt kodları için de yöntemleri vardır; bunlar arasında, 404'ün döndürülmesine neden olan HttpNotFound() yöntemi de bulunur.

Ayrıca bakınız: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

+0

Bu doğru. FWIW, OP 400 ve 404 değil gibi görünüyor, dolayısıyla HttpBadRequest() 'i döndürüyor. Ve buraya bir 401'i veya 'HttpUnauthorized()' i döndürmek için geldiler. –

+0

Teşekkürler, lc. - Uyuşmazlığı fark etmedim. Cevabımı düzenledim. – n8mob

+0

WebApiCompatibilitySim bağlantısı kesildi. Ayrıca, MVC5 ile temel RESTful isteklerine nasıl yanıt vermemiz gerektiği hakkında yorumda bulunabilirsiniz (bu, oluşturulan şablonda bile 'geçersiz' yöntemlerdir). –