“从客户端检测到一个潜在危险的Request.Path值%”但请求似乎没问题

问题描述

| 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
。应该在将虚拟路径解析为物理路径的位置调用此方法(或类似功能之一)。您是否正在使用自定义方法将虚拟路径转换为物理路径?