我们目前使用配置文件抛出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 - 此页面不存在)。尝试调试它,Application_Error
文件中的Global.asax
中的断点永远不会被命中。
我们需要让Application_Errors
正常工作,以便在您转到不存在的页面时调用它。
答案 0 :(得分:1)
看看这个: https://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.140%29.aspx#robustProgrammingToggle
它基本上说如果它不存在页面就不会捕获它。您必须在IIS中创建自定义处理程序。所以我认为这解释了为什么它没有进入Application_Error方法。
在IIS中设置自定义错误处理程序:https://technet.microsoft.com/en-us/library/cc753103%28v=ws.10%29.aspx