从客户端检测到潜在危险的Request.Form值

时间:2012-05-31 17:46:14

标签: asp.net-mvc exception httpwebrequest system.web

我正在运行ASP.Net MVC应用程序并面临以下错误。由于我是ASP.Net的新手,有人可以帮助我,告诉我这是什么意思,我该如何解决?

我试着谷歌搜索了解它,但找到了同样错误的不同答案让我更加困惑。

  

Global.asax中捕获到异常:System.Web.HttpRequestValidationException(0x80004005):从客户端检测到一个潜在危险的Request.Form值(ctl00 $ MainContent $ WarningCtl1 $ TXTWarningText ="       

这是warni ......")。          at System.Web.HttpRequest.ValidateString(String value,String collectionKey,RequestValidationSource requestCollection)          在System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc,RequestValidationSource requestCollection)          在System.Web.HttpRequest.get_Form()          在System.Web.HttpRequest.get_HasForm()          在System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)          在System.Web.UI.Page.DeterminePostBackMode()          在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)          在System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)          在System.Web.UI.Page.ProcessRequest()          在System.Web.UI.Page.ProcessRequest(HttpContext上下文)          at ASP.app_config_appttypes_groupappttypes_aspx.ProcessRequest(HttpContext context)          在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()          在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

请建议。

3 个答案:

答案 0 :(得分:8)

您需要将ValidateInputAttribute添加到控制器(将其应用于该控制器的所有操作方法,所以要小心):

[ValidateInput (false)]
public class MyController : Controller { ... }

或您的行动方法:

public class MyOtherController : Controller
{
    [ValidateInput (false)]
    public ActionResult MyActionMethod (MyObjectThatTakesInHtml myObject)
    { ... }
}

修改

正如@dotjoe指出的那样,我忘了提及,你也可以访问模型中某个属性的AllowHtmlAttribute(在System.Web.Mvc中找到)。

public class MyObjectThatTakesInHtml
{
    [AllowHtml]
    public string MyHtmlProperty { get; set; }
}

答案 1 :(得分:4)

  • 在客户端级编码并在服务器级别解码

步骤

1.使用jquery提交方法发布表单。

在jquery按钮单击事件方法编码要发布到服务器的字段。示例

$("#field").val(encodeURIComponent($("#field").val())) $("#formid").submit();

在Controller Level中使用

访问所有表单id值
HttpUtility.UrlDecode(Request["fieldid"])

确保控制器方法没有参数。

答案 2 :(得分:-1)

MVC

为行动添加了属性 [ValidateInput(假)]

并确认system.web中的web.config设置