如果URL不包含现有控制器,则Application_Error从未到达404
本文关键字:Error Application URL 包含现 控制器 如果 | 更新日期: 2023-09-27 18:09:01
我的global.asax:
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
//...
}
如果我像这样调用URL,其中NonExistingNonesense
不存在:
localhost/ExistingArea/ExistingController/NonExistingNonesense
一切正常。(代码来自我的全局。Asax将被调用)
但是如果我这样调用url:
localhost/NonExistingNonesense
代码从未到达Application_Error
方法。
有什么问题吗?
我在我的web.config:
<system.web>
<customErrors mode="On"></customErrors>
<!-- ... -->
</system.web>
<system.webServer>
<httpErrors existingResponse="PassThrough"/>
<!-- ... -->
<system.webServer>
请注意:
我知道这是可能的
<error statusCode="404" responseMode="ExecuteURL" path="/Error/PageNotFound" />
问题是,我需要传递一些异常上下文到我的视图,所以我想通过代码来处理这个
您的ASP。. NET代码不会被触发,除非它被IIS框架调用。默认情况下,IIS将在到达代码之前停止对不存在的文件的任何请求。但是你可以把它关掉。
进入IIS管理,只有当请求映射到文件选项时才禁用Invoke处理程序。