【问题标题】:Cannot disable ASP.NET request validation for URL "/x:)"无法禁用 URL“/x:)”的 ASP.NET 请求验证
【发布时间】:2019-03-27 09:40:34
【问题描述】:

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

我怎样才能完全避免请求验证?

【问题讨论】:

  • 您尝试过 IIS 请求过滤功能吗?
  • @NegiRox 我创建了一个新的网络应用程序只是为了测试目的。我所做的只是添加这些设置并添加一条路线。该新应用程序不使用 IIS 请求过滤。因此,该功能不能成为错误的原因。
  • 你想避免这种类型的请求?
  • 不,我要正确处理。
  • 是asp.net MVC模式吗?

标签: asp.net .net request-validation


【解决方案1】:

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

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

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

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

【讨论】:

  • 就是这样。我现在将其设置为 "" 以完全禁用这些检查。
猜你喜欢
  • 1970-01-01
  • 2017-03-12
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2018-04-19
  • 2010-12-11
  • 1970-01-01
相关资源
最近更新 更多