什么解码我编码的哈希符号(%23)?

我们注意到有几台机器存在带有哈希参数的URL问题。

使用URL调试请求时:
http://domain.com/Entity(%23{number-here}

我们在global.asax文件的Application_BeginRequest方法中看到Url.OriginalString的URL: http://domain.com/Entity(#23{number-here}Url.OriginalStringUrl.LocalPath http://domain.com/Entity(#23{number-here} Url.OriginalString http://domain.com/Entity(#23{number-here}Url.LocalPathhttp://domain.com/Entity(以及散列后的所有字符都在Url.Fragment

在运行Windows 8.1和IIS 8.5的计算机上运行完全相同的应用程序时,它按预期工作, Url.OrinalStringhttp://domain.com/Entity(%23{number-here}

我在web.config或IIS配置中的URL重写部分中看不到任何疑问。

这种行为可能是什么原因?

这是System.Web.dll中的错误。 它已在Windows 8.1上修复,但我们尚未在操作系统的下层版本上推出对System.Web.dll的修复。 当下一次可靠性更新发布时,我们正试图为所有支持的操作系统修复.NET 4.5.x.

这是旧操作系统的解决方法,直到错误修复被移植回来。 如果您可以轻松更改URL,请将可能包含哈希的术语放在查询字符串参数中,例如

 http://domain.com/?entity=Entity(#23{number-here}