URL中的ASP.NET aspxerrorpath

时间:2008-11-05 23:27:25

标签: .net asp.net iis .net-3.5 iis-7

我有一个网站,我在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。

有什么想法吗?

非常感谢。

2 个答案:

答案 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

中所述