无法禁用URL“ / x :)”的ASP.NET请求验证

时间:2018-10-23 08:10:57

标签: asp.net .net request-validation

当我访问ASP.NET MVC 5应用程序的URL /x:)时,出现此错误:

A potentially dangerous Request.Path value was detected from the client (:). 

[HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (:).]
   System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9939892
   System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53

这是完整的堆栈跟踪。

我想完全禁用请求验证。我不需要它,甚至需要处理像这样的奇怪URL。

我已经应用了所有这些设置,但是它们不起作用:

<httpRuntime targetFramework="4.7.2" requestValidationMode="2.0" />
<pages validateRequest="false" />
[ValidateInput(false)]

如何避免完全避免请求验证?

1 个答案:

答案 0 :(得分:2)

要在URL路径中允许使用特殊字符,应修改web.config中的requestPathInvalidCharacters参数,如下所示:

<system.web>
    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
</system.web>

注意,我刚刚删除了星号(*),原始默认字符串为:

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\,?" />