<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