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

C# 什么解码我的编码哈希符号(%23)?,c#,asp.net,iis,hash,character-encoding,C#,Asp.net,Iis,Hash,Character Encoding,我们注意到有几台机器在使用散列参数的URL时出现问题 调试URL为的请求时: http://domain.com/Entity(%23{此处编号} 我们在global.asax文件中的应用程序\u BeginRequest方法中看到URL: http://domain.com/Entity(#23{number here}在Url.OriginalString中,并且Url.LocalPath具有http://domain.com/Entity(和散列后的所有字符都在Url.Fragment中

我们注意到有几台机器在使用散列参数的URL时出现问题

调试URL为的请求时:
http://domain.com/Entity(%23{此处编号}

我们在
global.asax
文件中的
应用程序\u BeginRequest
方法中看到URL:
http://domain.com/Entity(#23{number here}
Url.OriginalString
中,并且
Url.LocalPath
具有
http://domain.com/Entity(
和散列后的所有字符都在
Url.Fragment

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

web.config
的URL重写部分或IIS配置中,我看不到任何可疑的内容


这种行为的原因是什么?

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

这里有一个解决方法und用于较旧的操作系统,直到错误修复被移植回来。如果您有机会更改URL,请在查询字符串参数中添加可能包含哈希的术语,例如

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

感谢您的快速正式回复!那么在此期间,您建议我们做什么?解决此问题的最佳方法是什么?谢谢。请尝试查询其他属性,例如HttpRequest.Path或HttpRequest.AppRelativeCurrentExecutionFilePath。不幸的是,HttpRequest.Url属性太不可靠,无法在这些场景中使用没有此错误修复的操作系统。(您可能会很聪明,使用HttpRequest.Url,执行一些启发式检查来解决此问题,但我建议您不要这样做,因为一旦实际修复失败,任何解决方法都可能被破坏。)Windows服务器呢?该错误是否也会影响它们?所有这些服务器?只有一些版本?是否有一个页面可以跟踪该错误?修复程序目前仅在Windows 8.1/Windows Server 2012 R2中。不幸的是,我们的内部错误数据库没有公共页面。如果愿意,您可以打开连接错误,但他们不会给您timelines beyond“它可能会在下一次可靠性更新中修复。”(从技术上讲,修复程序已经签入,因此应该在下一次可靠性更新汇总时自动获取,但我不能做出承诺,因为我们之前已经在最后一分钟回滚了修复程序,因为有报告称依赖错误行为的应用程序会导致倒退。)我相信$character(%24)也是如此。。?