如何避免 System.Web.HttpRequestValidationException 如何避免 System.Web.HttpRequestVal...

System.Web.HttpException: \u6587\u4ef6\u4e0d\u5b58\u5728\u3002 \u8fd9\u4e2a\u95ee\u9898\u600e\u4e48\u89e3\u51b3\uff1f\u8fd9\u4e2a\u95ee\u9898\u4f60\u600e\u4e48\u89e3\u51b3\u7684

1.Web.Config\u91cc\u9762 \u628asessionState \u7684mode\u6539\u4e3a"InProc" ;
2.\u5728\u670d\u52a1\u4e2d\u542f\u7528"ASP.NET State service"

http://blog.csdn.net/bingtingabc/article/details/8568366

1. disable validate request(不管推不推荐这是最普遍的)
在3.5及以下版本中 我们可以用如下几种操作:
ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性
在web.config中配置
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
在4.0中我们则不能够这样做了,但是我们可以通过重写RequestValidator中的IsValidRequestString 来达到同样的效果。
首先新建一个RequestValidatorDisabled类。

?

usingSystem;

classRequestValidatorDisabled : System.Web.Util.RequestValidator {
protectedoverridebool IsValidRequestString(System.Web.HttpContext context,stringvalue, System.Web.Util.RequestValidationSource requestValidationSource,stringcollectionKey,outintvalidationFailureIndex) {
validationFailureIndex = -1;
returntrue;
}
}

  
然后在webconfig system.web下加上
<httpRuntime requestValidationType="RequestValidatorDisabled" />
这样也可以有相同的效果

2.在产生错误的文件的顶部添加一条“Debug=true”指令。例如:
<%@ Page Language="C#" Debug="true" %>
将以下的节添加到应用程序的配置文件中:
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。

3.添加Page_Error事件,这也是推荐做法。

protectedvoidPage_Error(objectsender, EventArgs e)

{

Exception ex = Server.GetLastError();

if(exisHttpRequestValidationException)

{

Response.Write("请您输入合法字符串。");

Server.ClearError();// 如果不ClearError()这个异常会继续传到Application_Error()。

}

}

4. javascript判断,个人认为也很好。
<script type="text/jscript">
function validate() {//原谅我新学的javascript。。。
var text = document.getElementById("TextBox1").value;
var testArray = text.split('');
var flag = 0;
for (var a in testArray) {
if (testArray[a] == '<' && flag == 0) {
flag = 1;
}
if (testArray[a] == '>' && flag == 1) {
flag = 2;
break;
}
}
if (flag == 2) {
alert("have <html> tag");
return false;
}
return true;
}
</script>

ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性
在web.config中配置
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
在4.0中则不能够这样做了,但是可以通过重写RequestValidator中的IsValidRequestString 来达到同样的效果。
首先新建一个RequestValidatorDisabled类。
using System;class RequestValidatorDisabled : System.Web.Util.RequestValidator { protected override bool IsValidRequestString(System.Web.HttpContext context, string value, System.Web.Util.RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) { validationFailureIndex = -1; return true; }}  
然后在webconfig system.web下加上
<httpRuntime requestValidationType="RequestValidatorDisabled" />
这样也可以有相同的效果

扩展阅读:system halted怎么处理 ... 手机显示the system ... system halted如何解决 ... 电脑出现system date ... 文件在system中打开删不掉 ... system占用率高可以关掉吗 ... 电脑出现system time ... 无法生成system volume ... 电脑开机出现the system ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网