【ASP.NET】Webコントロールの数の制限について

Webコントロールの数の制限について

 * 結論から言うと、(2012/03/27現在までのところ)コントロールの数の制限はある。
  デフォルトなら最大数を 1000 に制限してある。
 →マイクロソフトセキュリティ更新プログラム MS11-100 によるもの。
    詳細は以下を参照のこと。
http://support.microsoft.com/kb/2661403/ja
 * 1000を超えた場合、例外InvalidOperationException『オブジェクトの現在の状態に問題があるため、操作は有効ではありません。』が発生する。

InvalidOperationExceptionの回避策

サンプル:web.config(ASP.NET 2.0以降)

* MaxHttpCollectionKeysの値を増やす
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>
</configuration>

ASP.NET 1.1の場合

* 以下のレジストリを変更する。詳細は以下を参照のこと。
http://support.microsoft.com/kb/2661403/ja
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

 * この値を既定の設定から増やすと、サーバーの脆弱性が悪化する。

結論(つぶやき)

 * あまりにもコントロールを表示するページは、設計段階で避けるように注意する。
 (ページ表示速度も遅くなるので、ユーザーにとってもいい事ないし)
 * それでもコントロール数が1000を超えそうなら、上記の回避策で凌ぐ。