IISがスレッドで静的変数をどのように処理しているかを理解するのに問題があります。私の理解では、IISに4つのワーカープロセスがあり、4つの要求を同時に処理でき、4つの別々のスレッドがWebサイトを実行しているのと同じであると常に理解しています。静的変数は、個々のスレッドごとに保持されます。私が少し混乱している理由は、接続とキャッシングトランザクションを管理するスコープを作成したためです。アプリをテストしているときは問題はありませんが、コンパイルして2つの異なる場所から同時にヒットした後、ある種の競合が発生しているようです。さて、これらのワーカープロセスが分離しているとしたら、なぜそうなるのでしょうか。1つのワーカースレッドで同時に複数のリクエストを処理できますか?これらの機能を管理するオブジェクトのエスカレーションを処理するためにこれらの静的メンバーに保持されている一意のIDがあり、同じオブジェクトにアクセスしようとしているように見えるため、これは非常に重要です。
これは、x64マシン上のVistaのIISサーバーで実行しています。
編集
単一のリクエストでスレッドを介して永続化する必要がある値については、これらの値を入れてWeb.HttpContext.Current.Items
、うまくいくようです。
<ThreadStatic()>
使用できますが、リクエストプロセスの終了時に使用できない場合があります。私が持っている1つのモジュールでは、そのスレッドがすでにcahcingサーバーの設定をロードしているかどうかを示すために変数でのみ使用されます。trueの場合、トレッド(asp.netではない)はキャッシュサーバーからデータをフェッチする準備ができています。