以前に呼び出された: aspx の負荷の下で動的に作成されたコントロールを処理する方法
以下の質問への回答: どのコントロールを復元するかを決定するために必要な情報は、専用のビューステート オブジェクトに含まれています。
コードビハインド ページでコントロールを動的に作成しています。これらのコントロールはすべてクリック ハンドラーに接続されているため、ポストバックが発生した場合は、以前のコントロール セットを再作成してから、コントロールをクリアして、新しいコントロール セットを生成する必要があります。前のクリック。
これはコード化されており、通常の状況では本質的に次のように正しく機能します。
in Page_Load
if not postback generate default buttons
else if postback re-generate buttons that were shown on last page
in click_handler
Clear the dynamically generated buttons created in the Page_Load
generate new buttons based on the specific click being handled
ただし、サーバーに負荷がかかると、問題が発生し始めます。
1 秒あたり 5 ユーザーの場合、例外が発生し始めます 。同じ ID 'add0' を持つ複数のコントロールが見つかりました。FindControl では、コントロールに一意の ID が必要です。
1 秒あたり 100 ユーザーの場合、例外が発生し始めます 。コントロール コレクションは、DataBind、Init、Load、PreRender、または Unload フェーズ中に変更できません。
これが発生すると、後続のすべての要求で同じエラーが発生し、IIS を再起動する必要があります。
何が原因で、どうすれば回避できますか? html リクエストは、負荷がかかっているときに上書きして互いに干渉する可能性がありますか? ページがアンロードされた後、次のページのロードがそれらの上をつまずくことができるような方法で、オブジェクトが何らかの方法で処理されますか?