首先,这个问题出现在 ASP.NET MVC 应用程序中,所以下面的解决方式都是在这个环境下。

关于这个问题,网上又很多的答案,当时也搜了一些:

  1. A potentially dangerous Request.Path value was detected from the client (*)
  2. ASP.NET MVC “Potentially dangerous Request.Path” with valid URL
  3. 从客户端(&)中检测到有潜在危险的 Request.Path 值解决方案
  4. 从客户端(?)中检测到有潜在危险的 Request.Path 值

以上资料,仅供参考,危险字符除了“&”,还有“?,/,<,>”等,解决方式五花八门,有使用 Server.UrlEncode 进行转码的,有 [ValidateInput(false)] 对 Action 进行配置的,有 pages validateRequest="false" webconfig进行配置的等等,各种方式都试了一下,最后还是一行配置搞定。

<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />

需要说明的是,如果对 requestPathInvalidCharacters 进行配置的话,比如 requestPathInvalidCharacters="<,>,%,&,:,,?",那么在危险字符进行忽略的时候,只会忽略 requestPathInvalidCharacters 中进行指定的字符,不指定的话,就会忽略全部字符。

05-08 08:28