2013-04-16 127 views
0

System.Web.HttpRequestValidationException:从所述客户端如何正确处理System.Web.HttpRequestValidationException

检测到潜在危险的 的Request.Form值上升时上述异常通常建议与禁止验证请求属性如下

[ValidateInput(false)] 
    public ActionResult Save(string content) 
    { 
     System.IO.File.WriteAllText(fileName, content); 
     return View(); 
    } 

那为什么还要拿出这个验证呢?如何正确处理这个异常?

回答

1

当URL请求(您的示例:string content)包含危险关键字:“>,?,<等......”。 如果你想处理这个异常(例如:允许这些),可以按照示例代码:

using System; 
using System.Web.Mvc; 

namespace Custom { 
    public class CustomValidateInput : FilterAttribute, IAuthorizationFilter { 
     /// <summary> 
     /// Called when authorization is required. 
     /// </summary> 
     /// <param name="filterContext">The filter context.</param> 
     /// <exception cref="System.ArgumentNullException">filterContext</exception> 
     public void OnAuthorization(AuthorizationContext filterContext) { 
      if (filterContext == null) { 
       throw new ArgumentNullException("filterContext"); 
      } 

      //Set disable validation request 
      filterContext.Controller.ValidateRequest = false; 

      //----------Your code handle here------------// 

     } 
    } 
} 

[CustomValidateInput] 
public ActionResult Save(string content) 
{ 
    System.IO.File.WriteAllText(fileName, content); 
    return View(); 
} 
+0

告诉我怎么读你的属性的“内容”参数? – user2217261

+0

之前,您添加对“System.Web.Routing”的新引用并添加新代码:if(filterContext.RequestContext.HttpContext.Request.Url!= null)var content = filterContext.RequestContext.HttpContext.Request.Url .Query; }' – LazyCatIT

+0

因为你不直接使用'filterContext.RequestContext.HttpContext.Request [“content”]''。 – LazyCatIT