【问题标题】:HttpRequestValidationexception on Asp.Net MVCAsp.Net MVC 上的 HttpRequestValidationexception
【发布时间】:2012-06-11 16:31:48
【问题描述】:

我收到带有以下错误消息的 HttpRequestValidationexception:

“从 客户”。

但是我收到错误的属性上有 AllowHtml。 问题是,稍后在我的代码中,我会以女巫格式获取以下属性,我将展示我的视图ControllerContext.HttpContext.Request.Params.AllKeys.Contains("format")。在这个“Param Getter”上我得到了错误。

假设我的代码类似于以下内容:

public class House
{
    [AllowHtml]
    public string Text { get; set; }
    public string Name { get; set; }
}

[HttpPost, ValidateAntiForgeryToken]
public ActionResult CreateTopic(House h)
{
 //business code
 if(ControllerContext.HttpContext.Request.Params.AllKeys.Contains("format"))
 {
    Return view;
 }
 }

我该如何解决这个问题?我已经尝试在控制器操作方法上使用 ValidateInput(false) 属性。有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    尝试将此添加到您的 web.config 中的 <system.web> 部分:

    <httpRuntime requestValidationMode="2.0"/>
    

    然后在您的操作中包含[ValidateInput(false)] 属性。

    Scott Hansleman 解释了这个功能here

    【讨论】:

    • 好的,但是我用这个把我的应用程序置于危险之中? requestValidationMode="2.0" 是什么?其余的输入仍然有效吗?
    • 是的,它只是让您可以使用 [ValidateInput] 装饰器关闭指定操作的输入验证。我已在原始答案中添加了有关此功能的详细文章。
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2016-09-13
    • 2012-08-09
    • 2010-09-19
    • 1970-01-01
    • 2015-10-27
    • 2011-10-06
    • 2010-09-07
    相关资源
    最近更新 更多