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

Error handling Web API-如何防止404 HTML响应?,error-handling,asp.net-web-api,http-status-code-404,Error Handling,Asp.net Web Api,Http Status Code 404,如何将ASP.NET Web API更改为从不返回text/html404响应?我希望它用异常消息或消息返回XML/JSON。从API返回HTML是没有意义的,IMO 只是想澄清一下,这适用于URL确实无效的情况 另一个问题是,我在同一个项目中托管MVC和WebAPI,所以我需要做出不同的响应。我猜这将取决于URL是否以“api”开头。您是否尝试过使用api?这可能允许您捕获异常,然后设置响应类型“applications/json”、消息等。如果只调用 抛出新的HttpResponseExce

如何将ASP.NET Web API更改为从不返回
text/html
404响应?我希望它用
异常消息
消息
返回XML/JSON。从API返回HTML是没有意义的,IMO

只是想澄清一下,这适用于URL确实无效的情况


另一个问题是,我在同一个项目中托管MVC和WebAPI,所以我需要做出不同的响应。我猜这将取决于URL是否以“api”开头。

您是否尝试过使用api?这可能允许您捕获异常,然后设置响应类型“applications/json”、消息等。

如果只调用
抛出新的HttpResponseException(HttpStatusCode.NotFound)
在ApiController的方法中的某个地方

只有当路由机制无法将您的请求与ApiController的任何方法相匹配时,您才能获得此页面。因此,HTML消息附加在应用程序级别,而不是APIController中。下面是一个很好的示例,说明如何处理ASP.NET应用程序中的错误

我甚至会进一步检查请求是否来自WebAPI(而不是MVC),如果是,则重定向到
errorscontoler
中的
IHttpActionResult

如何为响应准备
IHttpActionResult
,您可以在此处阅读

返回的HTML包含什么?您确定此错误是由Web API返回的吗?这些自定义404消息是由Web API端点返回的吗?或者找不到与端点相关的404?这是有人试图从我的API请求某些内容,他们只是键入了错误的URL。但这与Web API无关。在这种情况下,你的问题为什么要加上标签?这是标准的ASP.NET错误页。我在Global.asax中写了一些关于如何使用Application_Error事件处理错误的示例。你能解释一下为什么它与Web API无关吗?我知道您通常使用
customErrors
来更改响应。这和将URL设置为所需的API端点一样简单吗?有没有办法区分它是API调用还是MVC调用?它与Web API没有任何关系,因为Web API只处理它在路由定义中可以匹配的路由。其他一切都作为404异常传播。它的处理则是一个托管环境的问题,我想在您的例子中是ASP.NET(因为您提到了ASP.NETMVC)