Web API - 如何防止404 HTML响应?

时间:2014-01-22 20:48:55

标签: error-handling asp.net-web-api http-status-code-404

如何更改ASP.NET Web API永不返回text/html 404响应?我更愿意使用ExceptionMessageMessage发回XML / JSON。从IMO返回HTML是没有意义的。

只是为了澄清,这适用于URL确实无效的情况。

另一个问题是我在同一个项目中托管MVC和Web API,所以我需要做出不同的回应。我猜这将取决于URL是否以" api"。

开头

2 个答案:

答案 0 :(得分:2)

如果您只是致电,则不会获得这些HTML数据 throw new HttpResponseException(HttpStatusCode.NotFound); 在你的ApiController的方法中的某个地方。

只有当路由机制无法满足您对任何ApiController方法的请求时,才能获得此页面。因此HTML消息附加在应用程序级别而不是ApiControllers中。以下是如何处理ASP.NET应用程序Custom error pages on ASP>NET MVC3中的错误的非常好的示例。

我甚至会更进一步检查请求是否来自WebAPI(而不是MVC),如果是,则重定向到IHttpActionResult中的ErrorsContoller。 如何准备IHttpActionResult以获取您可以在此处阅读的回复Action Results in Web API 2

答案 1 :(得分:0)

您是否尝试使用Exception Filter?这可能允许您捕获异常,然后设置响应类型" applications / json",message等。