ASP.NET MS11-100:如何更改已发布表单值的最大数量限制?值=”;1000000000“;不起作用

ASP.NET MS11-100:如何更改已发布表单值的最大数量限制?值=”;1000000000“;不起作用,asp.net,.net,asp.net-mvc-3,post,web-config,Asp.net,.net,Asp.net Mvc 3,Post,Web Config,我收到了这个错误消息 Server Error in '/' Application. Operation is not valid due to the current state of the object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more informatio

我收到了这个错误消息

Server Error in '/' Application.
Operation is not valid due to the current state of the object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Operation is not valid due to the current state of the object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[InvalidOperationException: Operation is not valid due to the current state of the object.]
   System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2420322
   System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +58
   System.Web.HttpRequest.FillInFormCollection() +159

[HttpException (0x80004005): The URL-encoded form data is not valid.]
   System.Web.HttpRequest.FillInFormCollection() +217
   System.Web.HttpRequest.get_Form() +104
   Microsoft.Web.Infrastructure.DynamicValidationHelper.<>c__DisplayClass8.<MakeCollectionsLazy>b__2() +12
   Microsoft.Web.Infrastructure.DynamicValidationHelper.<>c__DisplayClass12.<ReplaceCollection>b__e() +61
   Microsoft.Web.Infrastructure.DynamicValidationHelper.<>c__DisplayClass12.<ReplaceCollection>b__11() +17
   Microsoft.Web.Infrastructure.DynamicValidationHelper.DeferredCountArrayList.get_Count() +17
   System.Collections.Specialized.NameObjectCollectionBase.get_Count() +15
   System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +23
   System.Web.HttpRequest.get_Form() +150
   System.Web.HttpRequestWrapper.get_Form() +11
   System.Web.Mvc.HttpRequestExtensions.GetHttpMethodOverride(HttpRequestBase request) +126
   System.Web.Mvc.AcceptVerbsAttribute.IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) +41
   System.Web.Mvc.HttpGetAttribute.IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) +40
   System.Web.Mvc.<>c__DisplayClass11.<RunSelectionFilters>b__d(ActionMethodSelectorAttribute attr) +24
   System.Linq.Enumerable.All(IEnumerable`1 source, Func`2 predicate) +145
   System.Web.Mvc.ActionMethodSelector.RunSelectionFilters(ControllerContext controllerContext, List`1 methodInfos) +319
   System.Web.Mvc.ActionMethodSelector.FindActionMethod(ControllerContext controllerContext, String actionName) +59
   System.Web.Mvc.ReflectedControllerDescriptor.FindAction(ControllerContext controllerContext, String actionName) +62
   System.Web.Mvc.ControllerActionInvoker.FindAction(ControllerContext controllerContext, ControllerDescriptor controllerDescriptor, String actionName) +16
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +105
   System.Web.Mvc.Controller.ExecuteCore() +116
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8969201
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 
“/”应用程序中出现服务器错误。 由于对象的当前状态,操作无效。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System.InvalidOperationException:由于对象的当前状态,操作无效。 源错误: 在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别。 堆栈跟踪: [InvalidOperationException:由于对象的当前状态,操作无效。] System.Web.HttpValueCollection.ThrowifMaxHttpCollectionKeysExcepended()+2420322 System.Web.HttpValueCollection.FillFromEncodedBytes(字节[]字节,编码)+58 System.Web.HttpRequest.FillInFormCollection()+159 [HttpException(0x80004005):URL编码的表单数据无效。] System.Web.HttpRequest.FillInFormCollection()+217 System.Web.HttpRequest.get_Form()+104 Microsoft.Web.Infrastructure.DynamicValidationHelper.c__DisplayClass8.b__2()+12 Microsoft.Web.Infrastructure.DynamicValidationHelper.c_uDisplayClass12.b_ue()+61 Microsoft.Web.Infrastructure.DynamicValidationHelper.c_uuDisplayClass12.b_uu11()+17 Microsoft.Web.Infrastructure.DynamicValidationHelper.DeferredCountArrayList.get_Count()+17 System.Collections.Specialized.NameObjectCollectionBase.get_Count()+15 System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc,RequestValidationSource requestCollection)+23 System.Web.HttpRequest.get_Form()+150 System.Web.HttpRequestWrapper.get_Form()+11 System.Web.Mvc.HttpRequestExtensions.gethttpmethodverride(HttpRequestBase请求)+126 System.Web.Mvc.AcceptVerbsAttribute.IsValidForRequest(ControllerContext ControllerContext,MethodInfo MethodInfo)+41 System.Web.Mvc.HttpGetAttribute.IsValidForRequest(ControllerContext ControllerContext,MethodInfo MethodInfo)+40 System.Web.Mvc.c_uuuudisplayClass11.b_uuud(ActionMethodSelectorAttribute属性)+24 System.Linq.Enumerable.All(IEnumerable`1源,Func`2谓词)+145 System.Web.Mvc.ActionMethodSelector.RunSelectionFilters(ControllerContext ControllerContext,List`1 methodInfos)+319 System.Web.Mvc.ActionMethodSelector.FindActionMethod(ControllerContext ControllerContext,String actionName)+59 System.Web.Mvc.ReflectedControllerDescriptor.FindAction(ControllerContext ControllerContext,String actionName)+62 System.Web.Mvc.ControllerActionInvoker.FindAction(ControllerContext ControllerContext,ControllerDescriptor ControllerDescriptor,String actionName)+16 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext ControllerContext,String actionName)+105 System.Web.Mvc.Controller.ExecuteCore()+116 System.Web.Mvc.ControllerBase.Execute(RequestContext-RequestContext)+97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext RequestContext)+10 System.Web.Mvc.c__显示类b.b__5()+37 System.Web.Mvc.Async.c__显示类1.b__0()+21 System.Web.Mvc.Async.c_uuudisplayClass8`1.b_uuu7(IAsyncResult)+12 System.Web.Mvc.Async.WrappedAsyncResult`1.End()+62 System.Web.Mvc.c_uuudisplayClasse.b_uuud()+50 System.Web.Mvc.SecurityUtil.b___0(操作f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作)+22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60 System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult结果)+9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+8969201 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+184 版本信息:Microsoft.NET Framework版本:4.0.30319;ASP.NET版本:4.0.30319.272 我已经试过做建议的修复

<appSettings>
   <add key="aspnet:MaxHttpCollectionKeys" value="1001" />
</appSettings>

我试着把它放在某个疯狂的数字上

<add key="aspnet:MaxHttpCollectionKeys" value="10000000000" />

但它仍然给我同样的错误(我有很多字段,但没有那么多)。我正在使用asp.NETMVC3(razor)。我正在使用.NET4.0


我通过jquery ajax(Seralizarry)发送整个表单,所以我不知道这是否与此有关。

使用更合理的值,例如
32000
,这对我来说很好

有没有一种方法可以将它限制在哪些形式上,而不是像现在看起来的那样是全球性的


不,我认为不可能处理每个表单的此设置。这是因为在进行路由之前很早就对值进行了解析,但只有在路由之后才知道它属于什么“形式”。

以下是限制:

  • MaxHttpCollectionKeys是一个整数,因此它的最大值可以是一个整数(int.MaxValue:2147483647)
  • 最小值为1
  • 默认值为1000

  • 您是否也尝试过一个合理的数字,比如32000左右?因为对我来说,修复程序就像广告中所说的那样工作。我会使用Fiddler查看表单数据是如何传递到服务器的。可能是数据的某种方式使.NET感到困惑,因此您会得到这样一个错误(可能是误导)。@Lucero。我想你是对的。32000似乎有效。也许我的号码太大了?我不确定它使用什么来存储值。是否有办法将其限制为允许在哪些表单上使用,而不是像现在这样的全局表单?嗯,您可以将其放在sub-web.configs中吗(我尝试过,但似乎不起作用,所以我可能做错了)。我只是认为我的表单在管理部分,但我不想让面向客户的表单打开我的网站