web.config默认错误页面与API返回的404冲突

时间:2014-12-08 20:13:20

标签: angularjs iis asp.net-web-api custom-error-pages

当调用API的<httpError>控制器预计处理404时,如何阻止IIS 8拦截HTTP 404错误并处理它们(通过<customError>AngularJS) ? API调用返回的404仅表示找不到请求的对象。然而,IIS似乎拦截了404并将其视为错误。

<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" defaultPath="Error.html">
    <remove statusCode="404" />
    <remove statusCode="505" />
    <error statusCode="404" path="Error.html" />
    <error statusCode="505" path="Error.html" />
  </httpErrors>
</system.webServer>

我可以在web.config(上面)中禁用自定义错误处理,但我仍然想要一个默认的catch all error页面。

1 个答案:

答案 0 :(得分:1)

如果您覆盖基本控制器protected override void OnException(ExceptionContext filterContext)您可以设置filterContext.HttpContext.Response.TrySkipIisCustomErrors = true。这将指示IIS忽略您定义的自定义错误。

有关在控制器中捕获404的详细信息,请参阅this文章。