16

我有一个网站,我在 web.config 中使用 CustomErrors 来指定自定义错误页面,这很好用。自定义 404 页面也在 IIS 配置中指定(因为如果不是,我不会得到我的自定义 404 页面)。

但是,如果用户得到一个 404 来查看他们请求的 URL 并在适当的情况下提出导航建议,我有一些逻辑可以启动。此逻辑依赖于 aspxerrorpath 值。在我的开发 PC 上,aspxerrorpath 正确附加到 URL,如下所示: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx,但在我的测试站点上,没有附加到 URL 的 aspxerrorpath,所以我所有的自定义逻辑都被绕过了,我的建议不起作用。我不确定这是 IIS 配置问题还是其他问题。Web 服务器是带有 IIS 7 的 Windows Server 2008。

有什么想法吗?

非常感谢。

4

2 回答 2

18

如果 .NET 捕获了错误(并且使用了 web.config 中指定的错误页面),则传递 aspxerrorpath 参数。如果您使用的是开发 Web 服务器,或者如果 IIS 配置为不检查文件是否存在,则会发生这种情况。

如果 IIS 检查文件是否存在,则使用 IIS 中配置的自定义错误,并且请求的 URL 包含在查询字符串中,如下所示

http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx

于 2008-11-05T23:48:40.183 回答
7

您可能需要将以下内容添加到 web.config

<customErrors mode="On">
  <error statusCode="404" redirect="~/error404.aspx" />
</customErrors>

欲了解更多信息检查: http: //geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

更新:我们可以利用 IIS7 功能使用 HTTPModules 显示自定义 404 错误页面,如http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET中所述.aspx

于 2008-11-06T00:17:19.907 回答