我们目前正在为我们的 Web 应用程序使用自定义错误页面来处理 404 错误。重定向发生时aspxerrorpath
包含用户尝试访问的路径。是否可以在 Global.asax 中捕获错误Application_Error
并在重定向发生之前将新参数附加到查询字符串?我想附加用户请求的主机。
我的理解是 IIS 处理 404 重定向并将aspxerrorpath
参数附加到 404 重定向,我想在它发生之前拦截它并将另一个参数附加到查询字符串。
更多信息:我们在 CMS 中有多个站点,因此请求的 url 并不总是,www.example.com
但 404 重定向总是 to www.example.com
。
当前:用户请求www.example.com/fakepage.aspx
并被重定向到...
www.example.com/404.aspx?aspxerrorpath=/fakepage.aspx
我想要什么:用户请求www.example.com/fakepage.aspx
并被重定向到...
www.example.com/404.aspx?aspxerrorpath=/fakepage.aspx&aspxerrorhost=example.com
解决方案: 我最终实现了一个自定义 HttpModule(请参阅下面的答案)。我只是想通过一篇优秀的文章来解释如何做到这一点。http://helephant.com/2009/02/11/improving-the-way-aspnet-handles-404-requests/