首先,这个问题出现在 ASP.NET MVC 应用程序中,所以下面的解决方式都是在这个环境下。
关于这个问题,网上又很多的答案,当时也搜了一些:
- A potentially dangerous Request.Path value was detected from the client (*)
- ASP.NET MVC “Potentially dangerous Request.Path” with valid URL
- 从客户端(&)中检测到有潜在危险的 Request.Path 值解决方案
- 从客户端(?)中检测到有潜在危险的 Request.Path 值
以上资料,仅供参考,危险字符除了“&”,还有“?,/,<,>”等,解决方式五花八门,有使用 Server.UrlEncode 进行转码的,有 [ValidateInput(false)] 对 Action 进行配置的,有 pages validateRequest="false" webconfig进行配置的等等,各种方式都试了一下,最后还是一行配置搞定。
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
需要说明的是,如果对 requestPathInvalidCharacters 进行配置的话,比如 requestPathInvalidCharacters="<,>,%,&,:,,?",那么在危险字符进行忽略的时候,只会忽略 requestPathInvalidCharacters 中进行指定的字符,不指定的话,就会忽略全部字符。