问题描述
<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>
我还在Application_Error方法的Global.asax.cs文件中处理错误:
Response.TrySkipIisCustomErrors = true;
HttpContext.Current?.Response.Redirect("~/Error/NotFound",true);
现在,当我按下mysite / contactus / blah之类的控制器时,我看到NotFound方法被调用了两次。
我尝试禁用这两个之一,但是这样做时出现了不同的问题。例如,如果我删除配置文件中的那个,则当404发生时,我得到了难看的黑色和红色页面。如果删除第二个页面,则会重定向到空白页面。
有人可以帮忙吗?谢谢。
解决方法
根据上面的对话,我从Global.asax中删除了错误处理,并且我的routeconfig文件中还包含了一条捕获所有路由,由于我已经通过条件限制了路由,因此我删除了该路由。这解决了这个问题。