从WebAPI 2端点返回自定义HTTP状态码
我正在WebAPI 2中的一个服务,端点当前返回一个IHttpActionResult
。 我想返回一个状态码422
,但由于它不在HttpStatusCode
枚举中,所以我不知道如何发送它,因为所有的构造函数都需要一个参数HttpStatusCode
就目前而言,我正在返回BadResult(message)
,但是返回422
+消息对我的客户来说更具描述性和实用性。 有任何想法吗?
根据C#规范:
枚举types可以采取的值的集合不受其枚举成员的限制。 特别是,枚举的基础types的任何值都可以转换为枚举types,并且是该枚举types的一个明确的有效值
因此,您可以将状态码422强制转换为HttpStatusCode。
示例控制器:
using System.Net; using System.Net.Http; using System.Web.Http; namespace CompanyName.Controllers.Api { [RoutePrefix("services/noop")] [AllowAnonymous] public class NoOpController : ApiController { [Route] [HttpGet] public IHttpActionResult GetNoop() { return new System.Web.Http.Results.ResponseMessageResult( Request.CreateErrorResponse( (HttpStatusCode)422, new HttpError("Something goes wrong") ) ); } } }
return Content((HttpStatusCode) 422, whatEver);
信用是: 用IHttpActionResult返回非OK响应的内容
并且您的代码必须<= 999
请忽略100到200之间的代码。
我用这种方式简单而优雅。
public ActionResult Validate(User user) { return new HttpStatusCodeResult((HttpStatusCode)500, "My custom internal server error."); }
然后angular控制器。
function errorCallBack(response) { $scope.response = { code: response.status, text: response.statusText }});
希望它可以帮助你。