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を超えそうなら、上記の回避策で凌ぐ。