Request.Path HttpRequest.ValidateInputIfRequiredByConfig() 异常
2016-05-12 04:21
585 查看
我们在ASP.net 4.0 中使用URL导向后, 我们在访问类似如下的地址时 http://wz.csdn.net/yanjinde77/一个面试题!********/,就会报错误:
A potentially dangerous Request.Path value was detected from the client
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.ValidateRequestExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
这是因为上述地址中有*这个特殊字符存在。
如果你想不让ASP.net 替你拦截这些特殊字符,你需要设置如下Web.config的节:
注意其中的requestPathInvalidCharacters 它是一个以逗号分隔的无效字符列表。不设置它时,它默认的无效字符集(以,分割)是后面7个:<,>,*,%,&,:,/
即,不设置这个属性,默认就是如下设置:
如果你想这些字符全部不受限制,就应该设置 requestPathInvalidCharacters="" , 如果是部分字符受限制,部分字符不受限制,就需要在 requestPathInvalidCharacters 中设置需要受限制的字符,不受限制的不用设置。
================================================================================================================
场景:
当URL中存在“<,>,*,%,&,:,/”特殊字符时,页面会抛出A potentially dangerous Request.Path value was detected from the client异常。
原因:
是ASP.NET默认的拦截机制,保证页面URL传输的一定安全性。
解决方案有两种:
第一种,直接去除页面请求危险字符验证:
在web.config配置文件的<system.web>节点下添加代码如下:
第二种,设置哪些危险字符需要被验证:
注意其中的requestPathInvalidCharacters是一个以逗号分隔的无效字符列表。默认不存在此键值对时,意味着受限制的无效字符集(以,分割)是这7个:<,>,*,%,&,:,/
如果你想这些字符全部不受限制,就应该设置requestPathInvalidCharacters="";
如果你想部分字符受限制,就需要在requestPathInvalidCharacters中设置需要受限制的字符;例如:requestPathInvalidCharacters="<,>"。
A potentially dangerous Request.Path value was detected from the client
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.ValidateRequestExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
这是因为上述地址中有*这个特殊字符存在。
如果你想不让ASP.net 替你拦截这些特殊字符,你需要设置如下Web.config的节:
<?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web> </configuration>
注意其中的requestPathInvalidCharacters 它是一个以逗号分隔的无效字符列表。不设置它时,它默认的无效字符集(以,分割)是后面7个:<,>,*,%,&,:,/
即,不设置这个属性,默认就是如下设置:
<?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <httpRuntime requestPathInvalidCharacters="<,>,*,%,:,&,/" /> </system.web> </configuration>
如果你想这些字符全部不受限制,就应该设置 requestPathInvalidCharacters="" , 如果是部分字符受限制,部分字符不受限制,就需要在 requestPathInvalidCharacters 中设置需要受限制的字符,不受限制的不用设置。
================================================================================================================
场景:
当URL中存在“<,>,*,%,&,:,/”特殊字符时,页面会抛出A potentially dangerous Request.Path value was detected from the client异常。
原因:
是ASP.NET默认的拦截机制,保证页面URL传输的一定安全性。
解决方案有两种:
第一种,直接去除页面请求危险字符验证:
在web.config配置文件的<system.web>节点下添加代码如下:
1 <system.web> 2 <httpRuntime requestValidationMode="2.0"/> 3 <pages validateRequest="false" clientIDMode="AutoID"/> 4 </system.web>
第二种,设置哪些危险字符需要被验证:
1 <system.web> 2 <httpRuntime requestPathInvalidCharacters="<,>,*,%,:,&,/" /> 3 </system.web>
注意其中的requestPathInvalidCharacters是一个以逗号分隔的无效字符列表。默认不存在此键值对时,意味着受限制的无效字符集(以,分割)是这7个:<,>,*,%,&,:,/
如果你想这些字符全部不受限制,就应该设置requestPathInvalidCharacters="";
如果你想部分字符受限制,就需要在requestPathInvalidCharacters中设置需要受限制的字符;例如:requestPathInvalidCharacters="<,>"。
相关文章推荐
- NetAnalyzer笔记 之 九 使用C#对HTTP数据还原
- Android入门之网络图片查看器
- Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接
- C#网络示例
- Okhttp post请求
- Java---网络编程(4)-C/S-B/S
- Java---网络编程(4)-C/S-B/S
- lucene学习001
- 抓取HTTPS 协议的程序报错
- 11个可以帮你增长网络社交粉丝的技巧
- ACM网络流入门
- CentOS IP丢失,切换了网络连接导致的vmnet8未启用dhcp
- Servlet/JSP-03 HttpServlet
- Windows网络编程学习笔记(3) 编写一个TCP服务端
- Apache HttpServer启动出错处理
- 阿里云 centos7 tomcat8 https 配置不起作用
- 网络聊天室
- HTTP1.1协议-RFC2616-中文版
- iOS网络编程-URL网络数据的解析
- Android 一个判断网络连接状态的简单方法