如何更改ASP.NET Web API,使其从不返回text/html
404响应?我希望它通过ExceptionMessage
或Message
发送回XML/JSON。从IMO返回API没有任何意义。
只是为了澄清,这是在URL确实无效的情况下。
另一个问题是我在同一项目中托管了MVC和Web API,因此我需要以不同的方式进行响应。我猜这将取决于URL是否以“api”开头。
最佳答案
如果仅调用以下内容,则不会获得这些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
关于error-handling - Web API-如何防止404 HTML响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293658/