在.NET 4上发现“有潜在危险的Request.Path ......”,requestValidationMode =“2.0”并且validateRequest =“false”设置

时间:2011-10-26 20:57:01

标签: asp.net asp.net-mvc validation web-config

我试图绕过.NET尝试提交HTML时抛出的错误消息:

A potentially dangerous Request.Form value was detected from the client

阅读following question后,web.config看起来像这样:

<configuration>
    <system.web>

        <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters=""/>

        <pages validateRequest="false">
            <namespaces>
                <add namespace="Microsoft.Web.Mvc" />
                <add namespace="System.Web.Mvc" />
                <add namespace="System.Web.Mvc.Ajax" />
                <add namespace="System.Web.Mvc.Html" />
                <add namespace="System.Web.Routing" />
            </namespaces>
        </pages>

    </system.web>
</configuration>

当我输入HTML时,我仍然会收到错误。我正在使用Visual Studio开发服务器运行.NET 4,MVC 2应用程序。

2 个答案:

答案 0 :(得分:3)

啊,刚刚在这里阅读了一篇博客:http://geekswithblogs.net/renso/archive/2011/08/26/a-potentially-dangerous-request-value-was-detected-from-the-client.aspx

它谈到了为你的行为添加另一个属性,[ValidateInput(false)],这很有趣,我没有看到关于SO的任何类似问题的提及。

我将该属性添加到我的BaseController中,我的应用程序中的所有控制器都继承该属性,并立即开始工作。

[ValidateInput(false)]
public class BaseController : Controller
{
    // code here
}

注意:我仍然需要包括两者:

<httpRuntime requestValidationMode="2.0"/>

<pages validateRequest="false" />

在网络配置中。

答案 1 :(得分:0)

尝试在解决方案上进行干净重建,如果需要,请关闭visual studio并清除临时ASP.NET文件。如果您将ValidateRequest设置为false,则可能是缓存问题或您的DLL不同步。

正如ajbeaven所提到的,您可能还想尝试将ValidateInput属性添加到控制器类中。

上述建议之一应该可以解决您的问题。