requestValidationMode 导致 ValidateRequest=False 失效或者ASP.NET 4.0事件消息: 发生了验证错误;检测到有潜在危险的Request.Form值
解决方案: web.config 中httpRuntime 的requestValidationMode属性更改为‘2.0’ ;
<httpRuntime requestValidationMode="2.0" />
例如:
先看如下 web.config 的代码:
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false"></pages>
</system.web>
validateRequest 这句我们知道是关闭验证,也就是说提交带标签,比如 <strong>粗体</strong> 这样的值时,ASP.NET 不会报错。
但在 4.0 中还多了一个 requestValidationMode,这是什么意思呢?
requestValidationMode 有两个值:
?2.0仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
?4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。
由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。