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

Cannot disable ASP.NET request validation for URL "/x:)"

当我访问 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

这是完整的堆栈跟踪。

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

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

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

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

要在 URL 路径中允许特殊字符,您应该像这样修改 web.config 中的 requestPathInvalidCharacters 参数:

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

注意,我刚刚去掉了星号(*),原来的默认字符串是:

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