我有一个网站,我在web.config中使用CustomErrors来指定一个自定义错误页面,而且工作得很好。自定义404页面也在IIS配置中指定(因为如果不是,我不会得到我的自定义404页面。)
但是,如果用户获得404查看其请求的URL并制作导航建议(如果适用),我有一些逻辑可以启动。该逻辑依赖于aspxerrorpath值。在我的开发PC上,aspxerrorpath被正确地附加到URL,如下所示: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx ,但在我的测试网站上,没有附加到网址的aspxerrorpath,因此我的所有自定义逻辑都被绕过,我的建议无效。我不确定这是IIS配置问题还是其他问题。 Web服务器是带有IIS 7的Windows Server 2008。
有什么想法吗?
非常感谢。
答案 0 :(得分:18)
如果错误被.NET捕获(并且使用了web.config中指定的错误页面),则传递aspxerrorpath参数。如果您正在使用开发Web服务器,或者如果IIS配置为不检查该文件是否存在,则会发生这种情况。
如果IIS检查该文件是否存在,则使用IIS中配置的自定义错误,并且请求的URL包含在查询字符串中,如
http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx
答案 1 :(得分:7)
您可能需要将以下内容添加到web.config
<customErrors mode="On">
<error statusCode="404" redirect="~/error404.aspx" />
</customErrors>
有关详情,请查看:http://geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx
更新:我们可以利用IIS7功能使用HTTPModule显示自定义404错误页面,如http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx
中所述