CustomErrors mode =“On”未重定向到ASP.Net Web API 2.0中的自定义错误页面

时间:2018-05-21 20:48:43

标签: asp.net asp.net-web-api custom-errors

我正在尝试在我们的Web API项目中创建一个customError页面。如果API中发生任何未处理的错误,我需要重定向到某个自定义页面,或者如果路由不可用,那么我还需要重定向到某个自定义错误页面。为此,我在web.config文件中添加了以下设置。

<compilation debug="true" targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error">
  <error statusCode="404" redirect="~/Error"/>
</customErrors>

我在共享文件夹中添加了Error.cshtml视图。 (注意:我的项目中没有错误控制器)

但如果我点击任何无效路径,我将获得IIS设置404页面。请看屏幕截图。enter image description here

不确定,我到底错过了什么。 此外,如果我附加了一个调试器,它不会来自Global.asax.cs的Application_Error方法(例如404/501错误)。令人惊讶的。

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题,并找到了可以帮助您的解决方案。 我想在你的控制器中你正在做这样的事情:

 public ActionResult AddReport
    ... 
    if (something is bad...)
         return HttpNotFound("Hey you have some beautiful error here");

所以这是你在问题中包含的截图 解决方案就是这样做

  public ActionResult AddReport
    ... 
    if (something is bad...)
         return new HttpException(404, "Hey you have some beautiful error here");

<强> 修改

根据您的评论,当您已经有许多控制器时,这不是实用的解决方案

在这种情况下,您可以尝试编辑您的web.config并将 标记替换为

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <error statusCode="404" path="/Error.html" responseMode="ExecuteURL"/>
</httpErrors>

快乐的编码!!