无法禁用 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="<,>,%,&,:,\,?" />
</system.web>
注意,我刚刚去掉了星号(*),原来的默认字符串是:
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?" />
当我访问 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="<,>,%,&,:,\,?" />
</system.web>
注意,我刚刚去掉了星号(*),原来的默认字符串是:
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?" />