我有一个MVC3应用程序,它有一个自定义的HandleErrorAttribute,这样我就可以通过邮件发送错误信息。 我经常收到“潜在危险的Request.Form值被检测到来自客户端”的错误提示,但它只显示导致异常的表单值的前几个字符。我想看到完整的表单值,以便尝试更好地了解输入是恶意的还是用户意外所致。然而,当我尝试在HandleErrorAttribute中获取表单值时,它会抛出相同的错误! 有什么办法可以在不在异常处理程序中引发验证的情况下获取Request.Form中的表单值吗?
public class HandleErrorLogAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
//Record Error
string errorDetails = HttpUtility.HtmlEncode(context.Exception.ToString());
// Throws "otentially dangerous..." error here
foreach (var key in context.RequestContext.HttpContext.Request.Form.AllKeys)
{
errorDetails += key + "=" + HttpUtility.HtmlEncode(context.RequestContext.HttpContext.Request.Form[key]);
}
// Send Email with errorDetails
}
}
[ValidateInput(false)]
并自行验证。 - M.Babcock