URL 中的 ASP.NET aspxerrorpath
Posted
技术标签:
【中文标题】URL 中的 ASP.NET aspxerrorpath【英文标题】:ASP.NET aspxerrorpath in URL 【发布时间】:2010-09-20 23:53:32 【问题描述】:我有一个网站,我在 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。
有什么想法吗?
非常感谢。
【问题讨论】:
在服务器上,它是重定向到 FileNotFound.aspx 还是发生错误时 url 保持不变? web.config 中是否有 defaultRedirect 的值?如果删除该元素中的值,行为会改变吗? 谢谢约翰。更多信息:在服务器上,URL 保持不变(它不会转到 FileNotFound.aspx)。 web.config 中没有 defaultRedirect 值。 【参考方案1】:如果错误被 .NET 捕获(并且使用 web.config 中指定的错误页面),则传递 aspxerrorpath 参数。如果您使用的是开发 Web 服务器,或者 IIS 配置为不检查文件是否存在,则会发生这种情况。
如果 IIS 检查文件是否存在,则使用 IIS 中配置的自定义错误,并且请求的 URL 包含在查询字符串中,类似于
http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx
【讨论】:
【参考方案2】:您可能需要将以下内容添加到 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 中所述
【讨论】:
谢谢拉梅什。我确实在 web.config 中有这个设置。 @theog:请让我知道您试图在测试机中访问哪个不存在的页面。它是否与 aspnet 工作进程相关联?另外,请查看professionalaspnet.com/archive/2008/02/13/… 中描述的 404 HttpModule以上是关于URL 中的 ASP.NET aspxerrorpath的主要内容,如果未能解决你的问题,请参考以下文章
如何从asp.net中的paypal(Sandbox)获取返回url中的参数