由于我在 Web.config 和 Global.asax 中的设置,NotFound 方法被调用了两次

A NotFound method is invoked twice due to my settings in Web.config and Global.asax

我有一个 MVC5 应用程序。在配置文件中,我设置了以下内容:

    <httpErrors errorMode="Custom" existingResponse="Replace">
      <clear/>
      <error statusCode="400" responseMode="ExecuteURL" path="/Error/BadRequest" />
      <error statusCode="403" responseMode="ExecuteURL" path="/Error/Forbidden" />
      <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFoundFromWebConfig" />
      <error statusCode="500" responseMode="ExecuteURL" path="/Error/Index" />
    </httpErrors>

我也是在Global.asax.cs文件中的Application_Error方法,处理错误:

     Response.TrySkipIisCustomErrors = true;
     HttpContext.Current?.Response.Redirect("~/Error/NotFound", true);

现在,当我点击控制器时 mysite/contactus/blah,我看到 NotFound 方法被调用了两次。

我试图禁用这两个中的一个,但是当我这样做时我遇到了不同的问题。例如,如果我删除配置文件中的那个,当 404 发生时,我会得到那个丑陋的黑色和红色页面。如果我删除第二个,我将被重定向到一个空白页面。

有人可以帮忙吗?谢谢。

根据上面的对话,我从 Global.asax 中删除了错误处理,并且在我的 routeconfig 文件中也有一个 catch all 路由,我删除了它,因为我已经通过条件限制了我的路由。这解决了问题。