2009-11-30 41 views
6

は、だから、私はASPStateTempApplicationsテーブルでこれを見つけるためにのみ、テーブル内のデータを調べることにしましたSQL Server 2008と一時データベースと今日を使用してSQL Serverのセッション状態を設定しました:SQL Serverのセッション状態、Webファーム、およびIISの設定

のAppIDのAppName
538231025/LM/W3SVC/1 /ルート
611758131/LM/W3SVC/3 /ルート
802488340/LM/W3SVC/4 /ルート
-940085065/LM/W3SVC/4/root/webapp
685293685/lm/w3svc/5/root
1210055478/lm/w3svc/5/root/webapp

2台の負荷分散されたWebサーバーがあります。私はweb1とは、ID 5.同じことををapp1たID 4とWEB2とAPP1持っていることがわかり、両方のサーバーのWebアプリケーションのIDSに見ると

他のアプリで発生します。 web1は1のIDでAPP2たとWEB2は3

私の常識は、セッションIDがAPPIDを使用してWebサーバがセッションを共有していないことを私に告げるのIDでAPP2ました。私は正しいですか?もしそうなら、なぜこのマイナーな細かいことがドキュメンテーションであまり明確ではないのですか?両方のWebサーバーでIDを一致させる必要がありますか?

答えて

6

AppIdは、あるアプリケーションから別のアプリケーションへの衝突を避けるために、SessionIdの作成時に使用されます。これは、IISアプリケーションパスのハッシュを計算することで作成されます。お使いの環境では

、流れはこのようなものかもしれません:

  1. サーバAは、セッションIDを作成し、クッキーにそれを設定し、対応するセッション(ASPStateTempSessionsの行)で、いくつかのデータを格納します。セッションID列は、セッションIDをAppIDと連結して作成されます。
  2. サーバーBは、既存のセッションIDを持つ要求を受信し、それを使用して、ASPStateTempSessionsテーブルから関連するセッションデータを検索します。アプリIDが異なる場合は、生成されるキーも異なります。

同じセッションを共有している異なるAppIdを持つ複数のサーバーを持つことの正味の効果は、1つのサーバーで作成されたIDが別のサーバーのIDと衝突しないことと、異なるAppIdを持つコンピューターはお互いのIDセッション。

+0

+1すてきな説明。 – Saar

+0

この記事によると:http://msdn.microsoft.com/en-us/library/aa478952.aspx ASPStasteTempSessionsテーブルのsessionidは、セッションID +アプリケーションIDです。 ASP.NETがコンテキストのセッションIDを変更し、それをサーバー間で使用するかどうか –

+0

私は、FiddlerとSSMSで、AppIDが実際にASPStateTempSessionsテーブルのキーとしてセッションIDの最後に連結されていることを確認しました。私はそれに応じて私の答えを更新しました。 – RickNZ

関連する問題