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并对该字段中的值进行编码。

最佳答案

是的,两者之间有区别。指定为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请求都启用。另外,配置文件中页面元素(如果有)或单个页面中@ Page指令的请求验证设置用于确定要验证的页面请求。

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

关于asp.net - requestValidationMode 4.5与2.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16590032/

10-13 08:58