首页 > 代码库 > <httpRuntime requestValidationMode=”2.0″ />

<httpRuntime requestValidationMode=”2.0″ />

场景:

最近项目中,有个需求是,将业务数据序列化为XML格式,先在界面预览,然后用户可以把XML下载在本地,或者保存到服务器。

界面预览时是把XML放在一个文本框控件里展示的,在本地源码跑起来是可以下载的,但发布到服务器IIS上会报如下的错误提示(类似)

从客户端(xmlText=<?xml version="1.0" encoding="UTF-8"?>...)中检测到有潜在的危险

对本地不报错,发布后报错,这种情况很是困惑。。。

 

解决方法:

百度了解到,报的问题原来是ASP.NET对提交请求的验证机制,在表单提交的数据中包含<,>等符号时,提交会被拦截下来,因为验证不通过。

本地不报错是因为项目是创建在.NET2.0版本上的,而服务器上IIS部署的网站是运行在.NET4.0版本上的,

ASP.NET4.0版本,如果想关闭请求验证,需在web.config中添加<httpRuntime requestValidationMode=”2.0″ />

 

注意点:

1、requestValidationMode是ASP.NET4.0版本以后才有的,在基于.NET2.0版本创建的项目web.config中添加这个属性会报“无法识别的属性”

2、requestValidationMode要配合pages的validateRequest属性来使用

 

参考:

1、http://www.cnblogs.com/losesea/archive/2012/05/20/2509359.html

2、http://bbs.csdn.net/topics/380040076

<httpRuntime requestValidationMode=”2.0″ />