是否已更改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" />
<% } %>
仍然是同一个问题,抛出异常。
答案 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
吗?