IIS是否会丢弃自定义错误页面上的URL片段?

时间:2010-11-05 19:55:27

标签: asp.net iis-6 url-rewriting

我在某个绑定到IIS6 *的网站上使用旧的404重写方法。

所以如果我输入

http://example.com/non-existent/path

它会像我这样调用我的错误页面

http://example.com/catch.aspx?404;http://example.com/non-existent/path

除了 ,如果我使用片段调用页面,例如

http://example.com/non-existent/path#with-fragment

我得到与上面相同的结果。我无法在任何地方找到片段:

  • Request.Url
  • Request.Url.OriginalString
  • Request.UrlReferrer
  • Request.RawUrl
  • 标题,服务器变量等

这已经出现,因为我想将AJAX创建的路径解析为服务器端版本。

我有办法从我的处理程序中检索原始路径吗?

感谢。

(*)请不要建议我换平台。显然,如果可以,我会这样做。

1 个答案:

答案 0 :(得分:2)

不,没有。 #之后的URL部分永远不会按照HTTP规范传递给服务器。与平台无关。

要在javascript中使用#之后的信息,您应该查看Javascript History插件/功能。 jQuery有历史插件,asp.net ajax和mvc ajax(部分视图等)都有。请注意,这不是一件非常容易实现的事情,你必须进入撤销/重做心态。

如果你试图在服务器上处理404,它可能不会工作 - 服务器不知道#之后有什么东西。不知道你想做什么,404处理,还是“解决AJAX创建的路径”?究竟是什么目标?