Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 5危险请求。检测到路径_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# ASP.NET MVC 5危险请求。检测到路径

C# ASP.NET MVC 5危险请求。检测到路径,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,我在ASP.NET MVC 5中遇到了一个相当常见的问题,它会对无效的URL字符抛出异常,例如&和% 我尝试了许多不同于其他堆栈溢出问题的建议,如和。但是,将此添加到my Web.config不起作用: <system.web> <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,:,\,?" requestValidationMode="2.0"/> &l

我在ASP.NET MVC 5中遇到了一个相当常见的问题,它会对无效的URL字符抛出异常,例如
&
%

我尝试了许多不同于其他堆栈溢出问题的建议,如和。但是,将此添加到my Web.config不起作用:

<system.web>
    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,:,\,?"
                 requestValidationMode="2.0"/>
</system.web>  

在我的控制器方法上方添加
[HttpValidate(false)]
也不起作用

我在寻找解决方案时发现了这一点,看起来很有希望,但即使这样也不行。url请求没有被该站点的代码更改,这让我怀疑问题是否在ASP.net有机会采取行动之前发生

我试图避免手动编码我的所有请求,但如果这是我必须做的,那么我想我别无选择

这是我的堆栈跟踪,如果有帮助的话:

[HttpException(0x80004005):潜在危险的请求。从客户端(&)检测到路径值。]

System.Web.HttpRequest.validateInputPrequiredByConfig()+9693412 System.Web.PipelineStepManager.ValidateHelper(HttpContext上下文)+53


我在Web表单应用程序中遇到过这个错误,它通常是由传递给控制器的特殊字符引起的。最简单的解决方案,确保数据在命中控制器之前正确编码。这将是最安全的方法,但是如果您想要一种快速而肮脏的方法,您可以通过
web.config
稍微放松页面/视图的安全性

<!-- Example: 'Web-Config' -->
<location path="test.aspx">
  <system.web>
    <httpRuntime requestValidationMode="2.0" />
  </system.web>
</location>
上文的目的:

如果在HTTP中传递空格和标点符号等字符 流,它们可能在接收端被误解。HTML 编码将HTML中不允许的字符转换为 字符实体等价物;HTML解码与编码相反。对于 例如,当嵌入到文本块中时,字符<和> 编码为<和>,用于HTTP传输


您还可以查找
UrlEncode
UrlDecode

我不会说这完全解决了我的问题,但它将我推向了正确的方向。我最终编码了我的URL请求,所以我认为它足够接近。谢谢你的帮助。@Fosforus很高兴它起到了作用,是的,很遗憾有些遭遇是一次性的,但通常都是围绕着这种方法来解决的。
HttpUtility.HtmlDecode("...");
HttpUtility.HtmlEncode("...");