【问题标题】:requestValidationMode 4.5 vs 2.0requestValidationMode 4.5 与 2.0
【发布时间】:2013-05-16 14:22:29
【问题描述】:

requestValidationMode="4.5" 和 requestValidationMode="2.0" 有区别吗?我有一个 .net 4.5 应用程序,有一个我不想验证的控件,因为用户可以在其中输入 html 标签:

<asp:TextBox ID="txtTitle" runat="server" ValidateRequestMode="Disabled" />

在我的 web.config 我有:

<compilation debug="true" strict="false" explicit="true" targetFramework="4.5">...</compilation> 
<httpRuntime targetFramework="4.5" requestValidationMode="2.0"  />

最初我设置了 requestValidationMode="4.5" 但这不起作用,我仍然会收到有关标签的错误 - “从客户端检测到潜在危险的 Request.Form 值......”提交表格。但是,如果我将它设置为 requestValidationMode="2.0" 它可以工作,我可以点击 PageLoad 并对来自该字段的值进行编码。

【问题讨论】:

    标签: asp.net asp.net-4.5


    【解决方案1】:

    是的,两者之间是有区别的。任何指定为 4.0 或以上的 requestValidationMode 都将使用 4.0 方式,任何指定为低于 4.0 的 requestValidationMode 都将使用 2.0 方式。下面是对两者的描述:

    http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.requestvalidationmode.aspx

    4.0(默认)。 HttpRequest 对象在内部设置一个标志,指示在访问任何 HTTP 请求数据时都应触发请求验证。这保证了在请求期间访问 cookie 和 URL 等数据之前触发请求验证。配置文件中 pages 元素(如果有)或单个页面中 @Page 指令的请求验证设置将被忽略。

    2.0。请求验证仅对页面启用,并非对所有 HTTP 请求启用。此外,配置文件中 pages 元素(如果有)或单个页面中 @Page 指令的请求验证设置用于确定要验证哪些页面请求。

    注意:还有其他解决方案,因为您使用的是 asp.net 4.5,您可能希望查看它以在每个控件级别上进行验证,这样您可以将 web.config 中的 requestValidationMode 属性保留为 4.5 和仅在需要它的控件上更改它。 http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx

    【讨论】:

    • 我相信这是我遇到的问题,我使用的是 .net 4.5,我最初将 webconfig 中的条目设置为 requestValidationMode="4.5" 并且仅在控件中设置了 ValidateRequestMode水平,只是一个控件需要它关闭,但它不起作用。将其更改为 requestValidationMode="2.0" 即可。
    • 最后的不是非常有帮助。我有一个文本框,我想允许任何内容进入。我用它从每行的开头解析出几段。没有任何东西被渲染回来。想知道如何避免将所有验证设置为 2...
    【解决方案2】:

    我同意 Chris_dotnet 的回答。

    不过,我想补充一点:

    在您的 web.config 文件中,将 requestValidationMode="2.0" 标记放在 location 标记下,这样您就只允许特定页面具有此“弃权”以跳过验证。

    <location path="YourPage.aspx">
      <system.web>
        <httpRuntime requestValidationMode="2.0"/>
      </system.web>
    </location>
    

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 2011-09-06
      • 2016-07-03
      • 1970-01-01
      • 2012-08-25
      • 2011-12-08
      • 2011-11-13
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多