1. ホーム
  2. asp.net

[解決済み] aspnet:MaxHttpCollectionKeys の最大値。

2022-02-07 14:46:23

質問

かなり大きなデータを投稿するフォームがあるのですが、このエラーが発生します。

[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

これを解決するために、私は StackOverflowからの解決策 それ自体

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

に設定できる有効な値の最大値を知りたい。 aspnet:MaxHttpCollectionKeys . このキーを最大値に設定することに問題はないでしょうか?

どのように解決するのですか?

MaxHttpCollectionKeysの実装は、以下のようになります。 アスペネットウェブスタックソース をGitHubで公開しています。

実装を見る限りでは、これが限界のようです。

  1. MaxHttpCollectionKeysはint型なので、最大値がint型( int.MaxValue: 2,147,483,647 )
  2. 最小値は1
  3. デフォルト値は1000

これは MSDNページ は、MaxHttpCollectionKeys をあまり大きな値に設定しないことを推奨します。これは、セキュリティリスクをもたらすからです。