asp.net-mvc - "A potentially dangerous Request.Path value was detected from the client (%)."但请求似乎没问题

标签 asp.net-mvc request-validation

ASP.Net MVC 3.0、.NET 4.0、IIS 7

我知道它已被问过很多次,但我仍然无法弄清楚它有什么问题。

我只是偶尔收到这些消息(每天不到 1 条),每天大约有 4000 次访问。

这是错误报告的链接:
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=--52145254126214646464--3214325254&crit=7&dodge=90&exp=19&haste=1&hit=10&mastery=100&parry=67&spi=0

我已经用 GET 和 HEAD 请求尝试过此 URL,但无法重现错误。

还有什么我可以戳的吗?

最佳答案

请注意 PATH_TRANSLATED = E:\web\wowreforgec\htdocs\EU\Kael%27Thas\Acekhor。在磁盘上查找文件路径之前,URL 编码字符 %27 似乎未被转换为 '% 字符被 default configuration of the RequestPathInvalidCharacters 禁止属性,因此输入被认为是危险的并抛出异常。

编辑

HttpUtility.UrlDecode(string s)方法应将 /EU/Kael'Thas/Acekhor 转换为 /EU/Kael'Thas/Acekhor。应在将虚拟路径解析为物理路径时调用此方法(或类似功能之一)。您是否使用自定义方法将虚拟路径转换为物理路径?

关于asp.net-mvc - "A potentially dangerous Request.Path value was detected from the client (%)."但请求似乎没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361315/

相关文章:

.NET 4.0 上的 ASP.NET MVC2 : is [ValidateInput(false)] enough?

php - Laravel 5.5 - 同时验证多个表单请求

asp.net-mvc-3 - 如何将 ASP.NET MVC3 请求验证异常处理为模型或属性验证错误

asp.net - 如何在现有数据库中创建 ASP.Net Identity 表?

asp.net-mvc - ActionLink 后退按钮

asp.net-mvc - 如果使用 LINQ to SQL 有什么好的理由再学习 SQL 查询/语法吗?

c# - 将 PDF 作为页面的一部分查看

c# - 扩展 HtmlHelper 类 asp.net mvc4

asp.net - 当用户使用 CAS SSO 注销时,ASP.NET MVC 触发 HttpRequestValidationException