別のアプリケーション (非 Web) といくつかの共通コードを共有する MVC Web アプリケーションがあります。
両方のアプリケーションが行う必要があることの 1 つは、特定のデータ ストアに接続することです。非 Web アプリケーションは、それぞれが異なる接続パラメーターのセットで複数のスレッドを実行するため、共通コードでは、各接続が「スレッド静的」としてマークされています。したがって、この接続は ASP.NET MVC アプリケーションでもスレッド静的でなければなりません。
私の Web アプリケーションでは、HttpModule
. はcontext_BeginRequest
接続を開き、 は接続をbegin_EndRequest
閉じます。(接続は 30 秒後にデータストアによって自動的に閉じられるため、無期限に開いたままにすることはできません)。
私の Web アプリケーションは、接続を使用できないというエラーが時々発生することを除けば、問題なく動作しているようです。
ロギングを追加してこれを調査しました。context_BeginRequest
、 、context_EndRequest
および例外がスローされたときに、各スレッドをログに記録しました。エラーは、アプリケーション内のHttpModule's context_BeginRequest
. それがヒットしなかったため、接続は開かれませんでした。
私の理解では、スレッドはヒットする必要がありましたHttpModule
-では、なぜそうではないのですか?
この動作を保証できない場合、どのようなアプローチを提案しますか?