【发布时间】:2015-06-24 10:40:40
【问题描述】:
我们目前使用配置文件来抛出 404 错误页面,但是我们希望将其移至 Global.asax 文件,因为我们希望能够使用多个 404 错误页面,具体取决于用户在页。
我们当前的设置:
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
</customErrors>
<httpErrors existingResponse="Replace" defaultResponseMode="Redirect" errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" responseMode="Redirect" path="/PageNotFound.aspx"/>
</httpErrors>
我们在 Global.asax 文件的 Application_Error 中添加了 statusCode 检查。
if (statusCode == 404)
{
Response.Redirect(String.Format("/PageNotFound.aspx"));
}
但是,当从配置文件中删除HttpErrors 时,不会调用应用程序错误,除非我们在页面中专门抛出 404 错误代码。就像我们的新闻栏目一样,如果新闻文章不存在,我们会抛出 404 错误页面,然后它会转到正确的错误页面(即http://[website].com/article?article=blah - 这篇文章不存在)。
我尝试了各种方法,但是它总是显示 IIS 404 错误页面,而不是仅在输入错误页面名称时显示的自定义页面(即http://[website].com/blah - 此页面不存在)。尝试调试它,Global.asax 文件中的Application_Error 中的断点永远不会命中。
我们需要让Application_Errors 工作,以便在您转到不存在的页面时也会调用它。
【问题讨论】:
标签: c# asp.net webforms http-status-code-404 global-asax