问题描述:
针对"http://...?name=&age=”这样的请求,使用Request.Form和Request.QueryString方法接收数据,会出现:从客户端(....)中检测到有潜在危险值...的错误提示。
问题原因:
由于在asp.net中,Request提交时出现有html代码或javascript等字符串时,程序系统会认为其具有潜在危险的值。环境配置会报出“从客户端 中检测到有潜在危险值”这样的Error。
解决方案:
方案1:
(1)在配置文件中加入:
<httpRuntime requestValidationMode="2.0"/>
(2)在.aspx页面中加入:
<%@ Page ValidateRequest="false" …
方案2:
原因是所传值含有特殊危险符号,那么可以在传前,利用HttpUtility.HtmlEncode(string)方法,对字符串进行编码,这样就会将危险字符转义为普通的字符。如string param=Server.HtmlEncode(str);
建议使用方案1。
在方案2总,如果传递的内容包括&等这样的特殊符号,传输数据会丢失。
下面针对传输特殊字符做下总结:
特殊字符 | HttpUtility.UrlEncode | HttpUtility.HtmlEncode |
= | %3d | = |
< | %3c | < |
& | %26 | & |