aspnet的最大值:MaxHttpCollectionKeys

nav*_*een 15 asp.net

我有一个发布相当大的数据的表单,我得到这个错误

[InvalidOperationException: Operation is not valid due to the current state of the    object.]
   System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2419334
   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
   System.Web.HttpRequest.get_HasForm() +9035903
   System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97
   System.Web.UI.Page.DeterminePostBackMode() +69
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +135
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我从StackOverflow本身得到了这个解决方案

<appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="2000" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

现在我想知道可以设置的最大有效值aspnet:MaxHttpCollectionKeys.将此键设置为最大值是否有任何问题?

小智 7

您可以在GitHub上的aspnetwebstack源中看到MaxHttpCollectionKeys的实现.

从实现看似这些是限制:

  1. MaxHttpCollectionKeys是一个int,因此它可以有一个整数的最大值(int.MaxValue:2,147,483,647)
  2. 最小值为1
  3. 默认值为1000

MSDN页面建议不要将MaxHttpCollectionKeys设置为太大,因为这会造成安全风险. 在此输入图像描述