请求验证 - ASP.NET MVC 2

时间:2009-10-30 06:57:22

标签: asp.net-mvc asp.net-4.0 request-validation

是否已更改ASP.NET MVC 2的请求验证,更确切地说,是否未验证?

我做了以下事情:

Web.configs(在App目录和Views目录中)

<pages
    validateRequest="false"

控制器/操作属性

[ValidateInput(false)]

在@Page View Directive中

ValidateRequest="false"

页面仍然有效,发布HTML内容时会抛出异常。

更新

创建了一个新的ASP.NET MVC 2应用程序,我将Home Controller的索引修改为

    [ValidateInput(false)]
    public ActionResult Index(string InputText)
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

和我的浏览页面

<% using(Html.BeginForm()){ %>
    <%= Html.TextBox("InputText") %>
    <input type="submit" />
<% } %>

仍然是同一个问题,抛出异常。

2 个答案:

答案 0 :(得分:31)

下次我应该更仔细地阅读错误:

  

要允许页面覆盖应用程序请求验证设置,   在配置部分设置requestValidationMode =“2.0”。   设置此值后,您可以通过禁用请求验证   设置validateRequest =“false”

我把它放在应用程序的web.config

<system.web>
  <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
</system.web>

并且有效。

更新

我正在运行ASP.NET 4,原因如下:P

答案 1 :(得分:2)

在此处插入有关XSS的强制警告。

您使用ValidateInputAttribute修饰控制器(或操作)应该足够了,因为所有验证都是在ASP.NET MVC中的此控制器级别完成的

我刚刚在一个动作上尝试了这个,当我输出它时它会返回一个漂亮的邪恶警报(),所以我猜想这里还有别的东西。

你在任何地方都设置了HandleErrorAttribute吗?