gpt4 book ai didi

c# - 如何获取导致 MVC 中的 "A potentially dangerous Request.Form value was detected from the client"的表单值?

转载 作者:太空狗 更新时间:2023-10-29 22:20:01 27 4
gpt4 key购买 nike

我有一个具有自定义 HandleErrorAttribute 的 MVC3 应用程序,以便我可以通过电子邮件发送错误。我经常收到“从客户端检测到潜在危险的 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
}
}

最佳答案

在 ASP.NET 4.5 中,您将能够使用新的 HttpRequest.Unvalidated.Form 属性。

在那之前,您可以使用反射来读取私有(private) HttpRequest._form 字段:

HttpRequest request = context.RequestContext.HttpContext.Request;
NameValueCollection form = (NameValueCollection)request.GetType().InvokeMember(
"_form",
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField,
null, request, null);

请注意 _form 是由 HttpRequest.Form 属性延迟初始化的,因此请确保至少事先访问过一次 HttpRequest.Form .

关于c# - 如何获取导致 MVC 中的 "A potentially dangerous Request.Form value was detected from the client"的表单值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com