質問

私の Web アプリはいくつかのサービス (WCF) を公開しており、XML ファイルをロードして、AppDomain 全体に表示される静的変数にそれを「保存」する必要があります。この変数は、サービスまたはページからクエリして更新する必要があります。

問題は、その変数を Application_Start (Global.asax.cs) にロードしますが、サービスリクエストが到着すると、変数は空であり、「再ロード」する必要があり、これはすべてのサービスで発生するため(3)、最終的には静的変数のインスタンスが 3 つあります。

すべてのアプリケーションが同じ AppDomain 上で実行されていることを確認するにはどうすればよいですか?私は何を間違っているのでしょうか?

Win7 RTM ボックス上の VS2008 SP1

役に立ちましたか?

解決

さて、少し調べた結果、解決策が見つかりました。ここに解決策と、それを見つけるのに役立つ多くのリンクを投稿します。

WCF サービスと ASPX ページは、サイドバイサイドで実行する場合 (既定)、同じ AppDomain 上で実行されます。私の問題は、アプリがアプリのルート フォルダーの下にフォルダーを作成するため、AppDomain がリサイクルされることでした。その作成をアプリ自体から遠ざけると、AppDomain の再起動が終了したため、常に静的な値を保持しています。

以下は、私が読んで解決策を見つけるのに役立った興味深い投稿のリストです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top