为什么即使在禁用它后仍然会“检测到一个潜在危险的Request.Form值”?

时间:2013-11-13 03:49:08

标签: asp.net-mvc asp.net-mvc-4

我刚刚在Visual Studio 2012(C#)中创建了一个新的MVC4“Internet”应用程序。

我转到默认/帐户/登录页面并输入<b />作为用户名。

服务器因此错误而崩溃:

  

从客户端检测到潜在危险的Request.Form值(UserName =“
”)。

我之前见过它并且之前已经摆脱它,所以我可以轻松地再做一次。我将Web.config更改为如下所示:

<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" requestValidationMode="2.0" /><!-- Look here -->
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages validateRequest="false"><!-- Look here -->
  <namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
  </namespaces>
</pages>
</system.web>

我清理了解决方案并进行了重建,但是当我再次尝试<br />时,我仍然会收到完全相同的错误。

怎么了?

1 个答案:

答案 0 :(得分:1)

修改Web.config文件是如何禁用Web窗体中的设置。

在MVC中,您可以将ValidateInput属性应用于控制器方法。

<HttpPost>
<ValidateInput(False)>
Public Function ActionName(model As Object) As ActionResult

End Function

或者如果您更喜欢C#

[HttpPost]
[ValidateInput(false)]
ActionResult ActionName(Object model) {

}