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。

posted on 2013-05-24 14:42  zg_heng  阅读(1029)  评论(0编辑  收藏  举报

导航