Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制级别ValidateRequestMode无效_C#_Asp.net_.net_Webforms_Request Validation - Fatal编程技术网

C# 控制级别ValidateRequestMode无效

C# 控制级别ValidateRequestMode无效,c#,asp.net,.net,webforms,request-validation,C#,Asp.net,.net,Webforms,Request Validation,我使用的是ASP.NET WebForms(.NET 4.5),并且有一个“内容块”控件,可以在许多页面上重复使用。我已经尝试将控件的ValidateRequestMode甚至单个元素设置为“Disabled”,但是来自web.config的请求验证仍然可以防止不安全的输入 有办法解决这个问题吗?还是我做错了什么 示例:我刚刚用下面的代码为一个站点解决了同样的问题,经过一上午的尝试和错误-当涉及到WebForms时,Microsoft关于新请求验证过程的文档似乎是错误的 web.config中的

我使用的是ASP.NET WebForms(.NET 4.5),并且有一个“内容块”控件,可以在许多页面上重复使用。我已经尝试将控件的ValidateRequestMode甚至单个元素设置为“Disabled”,但是来自web.config的请求验证仍然可以防止不安全的输入

有办法解决这个问题吗?还是我做错了什么


示例:

我刚刚用下面的代码为一个站点解决了同样的问题,经过一上午的尝试和错误-当涉及到WebForms时,Microsoft关于新请求验证过程的文档似乎是错误的

web.config中的目标.NET 4.5,如下所示:

<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
如果您直接访问POST数据(而不是通过myControl.Text),您还需要绕过验证:

Request.Unvalidated.Form("myControl");

同意杰森·埃尔金的观点

作为补充,在设置
ValidateRequestMode=“Disabled”

在控制级别上,在服务器端,无论何时访问请求,都必须访问Request.Unvalidated以获取值。

此答案将@Jason Elkin的答案扩展到了.NET Framework 4.8,并将其宽松安全性的范围限制在特定目录中。如前所述,
ValidateRequestMode=“Disabled”
本身对我不起作用。所做的工作是将以下内容插入到我的ASP.NET应用程序项目Web.config文件中:

  <location path="pages/ajax">
    <system.web>
      <!-- enable AJAX -->
      <xhtmlConformance mode="Strict" />
      <!-- this allows HTML content to post back when control's ValidateRequestMode="Disabled" -->
      <httpRuntime targetFramework="4.8" requestValidationMode="4.8" />
    </system.web>
  </location>

其中
“pages/ajax”
是从web.config目录到包含发布HTML输入的web表单的目录的相对路径

  <location path="pages/ajax">
    <system.web>
      <!-- enable AJAX -->
      <xhtmlConformance mode="Strict" />
      <!-- this allows HTML content to post back when control's ValidateRequestMode="Disabled" -->
      <httpRuntime targetFramework="4.8" requestValidationMode="4.8" />
    </system.web>
  </location>