20

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

我做了以下事情:

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

<pages
    validateRequest="false"

控制器/动作属性

[ValidateInput(false)]

在@Page 视图指令中

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" />
<% } %>

仍然是同样的问题,抛出异常。

4

2 回答 2

31

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

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

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

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

它奏效了。

更新:

我正在运行 ASP.NET 4,这就是为什么:P

于 2009-10-30T11:07:02.277 回答
2

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

你用ValidateInputAttribute就足够了,因为所有验证都是在 ASP.NET MVC 中的此控制器级别完成的

我现在刚刚在一个动作上尝试了这个,当我输出它时它返回一个很好的、邪恶的 alert() ,所以我冒险猜测这里还有其他事情发生。

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

于 2009-10-30T09:03:34.430 回答