ASP.NET 静的変数: その動作を理解する
ASP.NET 開発者は、クラスまたはモジュール内の共有データを維持するために静的変数を頻繁に利用します。 ただし、特にページ クラスや WebMethods 内では、その寿命は予測できない場合があります。
WebMethods における静的変数リセットの謎
一般的な問題は、セッションがアクティブなままである場合でも、ページ クラスの静的変数が予期せずクリアされることです。この動作はしばしば混乱を招きます。
アプリドメインのリサイクルとクラス置換: 根本原因
これらのリセットを理解する鍵は、ASP.NET のアプリ ドメインのリサイクルとクラス置換メカニズムにあります。 静的変数は、アプリ ドメインの存続期間中のみ存在します。 アプリ ドメインをリサイクルするか、新しいクラス インスタンスを使用すると、これらの変数がリセットされます。 ASP.NET はページ クラスを再コンパイルし、古いクラスを新しいクラスに事実上置き換えることになり、静的変数データが失われる可能性があります。
ベスト プラクティス: 静的変数の損失を回避する
データ損失を防ぐため、ページ クラス内で静的変数を直接使用することは避けてください。代わりに、別のクラス (App_Code フォルダーの外) を使用して永続データを保存します。 例:
<code class="language-csharp">public static class GlobalData { public static int GlobalCounter; public static string GlobalSetting; }</code>
このアプローチにより、リクエストやクラスの再コンパイル全体でデータの永続性が確保されます。
重要な考慮事項:
lock
キーワードを使用します。以上がASP.NET WebMethods で静的変数がリセットされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。