问题描述
|
ASP.Net MVC 3.0,.NET 4.0,IIS 7
我知道它已经被问过很多次了,但是我仍然无法弄清楚它到底出了什么问题。
我偶尔会收到这些消息(每天少于1次),每天访问量约为4k。
这是错误报告的链接:
http://wowreforge.com/elmah.axd/detail?id=6CBE6DCA-88C2-45E7-AF53-A53061B8E25D
(请注意,有指向XML和JSON详细报告的链接)
首先要注意的是URL(PATH)包含UTF-8编码的字符:/ US / Warsong / Spartan%C3%B6
第二件事,请求是HEAD,而不是GET
我认为,这些细节中的任何一个都不会导致我收到错误。
原始网址为:
http://wowreforge.com/US/Warsong/Spartan%C3%B6?reforge=--52145254126214646646464--3214325254&crit=7&dodge=90&exp=19&haste=1&hit=10&mastery=100&parry=67&spi=0
我已经尝试过同时使用GET和HEAD请求的URL,但是无法重现该错误。
我还有什么可以戳的?
解决方法
注意that0ѭ。查找磁盘上文件的路径之前,似乎URL编码字符
%27
没有转换为\'
。 RequestPathInvalidCharacters属性的默认配置禁止使用“ 3”字符,因此输入被认为是危险的,并且会引发异常。
编辑
HttpUtility.UrlDecode(string s)方法应将/EU/Kael%27Thas/Acekhor
转换为/EU/Kael\'Thas/Acekhor
。应该在将虚拟路径解析为物理路径的位置调用此方法(或类似功能之一)。您是否正在使用自定义方法将虚拟路径转换为物理路径?