gpt4 book ai didi

asp.net-mvc - 即使禁用验证,ASP.NET 请求验证也会出现异常

转载 作者:行者123 更新时间:2023-12-03 03:32:44 24 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 2、.NET 4.0。

我有一个禁用请求验证的 Controller :

[AcceptVerbs("POST")]
[ValidateInput(false)]
public ActionResult Add(string userId, FormCollection formValues)
{
//...
}

当 POST 包含 HTML 时,我仍然收到 HttpRequestValidationException:

System.Web.HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (ThisWeek="").   at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)   at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection)   at System.Web.HttpRequest.get_Form()   at System.Web.Mvc.HttpRequestExtensions.GetHttpMethodOverride(HttpRequestBase request)   at System.Web.Mvc.AcceptVerbsAttribute.IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)   at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)   at System.Web.Mvc.ActionMethodSelector.RunSelectionFilters(ControllerContext controllerContext, List`1 methodInfos)   at System.Web.Mvc.ReflectedControllerDescriptor.FindAction(ControllerContext controllerContext, String actionName)   at System.Web.Mvc.ControllerActionInvoker.FindAction(ControllerContext controllerContext, ControllerDescriptor controllerDescriptor, String actionName)   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)   at System.Web.Mvc.Controller.ExecuteCore()   at System.Web.Mvc.MvcHandler.c__DisplayClass8.b__4()   at System.Web.Mvc.Async.AsyncResultWrapper.c__DisplayClass1.b__0()   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我需要允许在此处输入 HTML 文本,因为该应用程序是一个错误跟踪系统,并且人们在提交的错误中谈论 HTML。我正在正确处理此操作的输入,并在重新输出时对其进行适当编码,因此禁用此操作的验证是合理的。

我们最近切换到 MVC2 和 .NET 4,这种情况开始出现。从堆栈跟踪来看,验证似乎是作为对 HTTP 方法覆盖的新支持处理的一部分而发生的(通过包含专门命名的隐藏输入,使 POST 看起来像 PUT 或 DELETE)。但我不知道如何告诉该子系统停止验证输入。

我需要做什么才能使这项工作成功?

最佳答案

将其添加到 web.config 的 system.web 部分:

<httpRuntime requestValidationMode="2.0" />

关于asp.net-mvc - 即使禁用验证,ASP.NET 请求验证也会出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522995/

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