stackoverflow の最初の投稿です。素晴らしいフィードバックをお待ちしております :)
現在、Web サイトの負荷分散を試みています。IIS 6 を使用して Windows Server 2003 に 2 クラスターの NLB をセットアップしました。
セットアップをテストしているときに、セッションが失われることがあることがわかりました。1日半後、結果は次のとおりです。
- はい、machine.config は両方とも同じ暗号化/復号化キーを持っています。
- はい、iis metabase.xml の ID は両方のマシンで同じです。実際には、「AdminACL」を除いて、ファイル全体が同じです。
- 両方の Web アプリケーションが「StateServer」で設定され、両方が同じマシンを指しています。
その時点から、Google で検索すると、より少ない情報と考えられる解決策が得られます。
私の知る限り、この問題を引き起こす特定のパターンはありません。たまにしか起こりません。
問題を見つけようとしているときに、リクエストが asp セッション ID Cookie をサーバーに送信したが、サーバーがそれをユーザー セッションにマップしていないことがわかりました。
ということで、クライアントからリクエスト番号xが送られてきて、cookieでセッションがマッピングされ、スムーズに進みました。クライアントからリクエスト番号 x+1 が Cookie とともに送信されましたが、セッションが見つかりませんでした。
両方の要求は、NLB の同じマシンで行われました。
asp trace.axd のスニペットを次に示します。
最初のリクエスト:
リクエストの詳細 セッション ID: j2ffvy45updpc52uhw1mbg55 リクエスト タイプ: GET リクエストの時刻: 11/26/2008 2:58:06 PM ステータス コード: 200 リクエストのエンコーディング: Unicode (UTF-8) レスポンスのエンコーディング: Unicode (UTF-8)
Cookie コレクションのリクエスト
名前 値 サイズ
ASP.NET_SessionId j2ffvy45updpc52uhw1mbg55 42 AID 22 9
応答 Cookie コレクション
名前 値 サイズ
ヘッダー コレクション
名前 値
Cookie ASP.NET_SessionId=j2ffvy45updpc52uhw1mbg55; AID=22
2 番目の要求:
リクエストの詳細 セッション ID: リクエスト タイプ: POST リクエストの時刻: 11/26/2008 2:58:08 PM ステータス コード:
リクエストのエンコード: Unicode (UTF-8) レスポンスのエンコード:
Cookie コレクションのリクエスト
名前 値 サイズ
応答 Cookie コレクション
名前 値 サイズ
ヘッダー コレクション名 値 Cookie ASP.NET_SessionId=j2ffvy45updpc52uhw1mbg55; AID=22
2 番目の要求でわかるように、Cookie はクライアントから送信されますが、asp は「Request Cookies Collection」に Cookie を追加しないようです。それがセッションを見つけられない理由だと思います。
では、なぜ Cookie がセッションにマップされないのでしょうか? それが問題ですか?問題は他の場所にありますか?
ご不明な点がございましたら、お気軽にお問い合わせください。
フィードバックをお寄せいただきありがとうございます。
JF