5

SQL Server データベースを使用して、2 つの運用 Web サーバー間で共有セッション状態を管理しています。
最近、サーバーからサーバーにジャンプするときにセッションが実際には共有されていないことに気付きました (以前はそうではなかったと確信しています)。

両方のサーバーが同じドメインで同じ Web サイトを実行しており、ハードウェア ロード バランサーを使用してバランスが取れています。どちらも IIS7 で動作します。また、両方のサーバーで ASP.NET State Service が実行されています。

HTTP ヘッダーを検査し、SQL プロファイラー キャプチャとの相互参照を行ったところ、問題と思われるものが見つかりました。

Cookie の SessionId 値は 24 文字の文字列です。y4hfairc2xbwlupkdsqpv0nz

ASPStateデータベースによって受信され、そこに保存される SessionIDはより長く、サーバー固有の 8 文字の接尾辞があります。たとえば2476b0332b7731d2データベースに保存されているすべてのセッションで一貫性があります。
したがって、SessionID は次のようになりますy4hfairc2xbwlupkdsqpv0nz2476b033y4hfairc2xbwlupkdsqpv0nz2b7731d2

そのため、明らかにセッションは共有されず、各サーバーは独自のセッション状態を維持します。

以前にこれに遭遇した可能性のある同様の構成を使用している人はいますか?

ありがとう

アップデート

ここで判明: SQL Server に保存された SessionId は、余分な文字が IIS AppID である asp.net ランタイムから生成されたものとは異なります。ここで、両方のサーバーが一致するように変更する方法を見つける必要があります。これまでのところ運がありません。
誰?

4

1 に答える 1

3

完全を期すために自分の質問に答えます。

これのおかげで: https://serverfault.com/questions/288981/load-balanced-iis-7-5-web-server-asp-net-session-state-problem

AppID を一致させる方法を見つけました。

今ではすべてがうまく機能しているようです。

于 2012-08-18T07:43:13.797 に答える