2011-07-27 13 views
2

私は2つのWebサーバー(IIS)上にあり、スティッキーアフィニティを持つコンテンツスイッチ経由で負荷分散されたASP.NET 3.5 Webフォームアプリケーションを持っています。私は、セッション変数にデータを置くページを持っています、JavaScriptは新しいブラウザウィンドウを開き、そのページのpage_loadイベントで、私はそのセッション変数を取得し、データを表示します。セッション状態異常な動作

問題は、IEのすべてのバージョンで、10回のうち約7回、データが表示されないということです。新しく開いたウィンドウを更新し続けると、最終的にデータが表示されます。ブラウザウィンドウを開く前に、セッション変数が有効であることを確認できます。

追加のひねりは、firefoxにはこの問題がないことです。データは最初の時間の100%表示されます。問題は、私たちが(正式に)Firefoxをサポートしていないことです。

私たちはMSSQLやMySQLなどの第三者のデータストアにアクセスできないため、セッションデータをそこに保存することはできません。さらに、データクライアント側をキャッシュする機能は実用的ではなく、場合によってはオプションではありません。

これは、ローカルまたは私たちのテスト環境(負荷分散されていない)では発生しないため、私は本当に困惑しています。どんな助けでも大歓迎です。

ありがとうございました。

+0

IEのすべてのバージョン? IE8では、各ブラウザのタブ/ウィンドウが新しいセッションを作成するので、これを期待していましたが、IE8より前には動作すると期待していました。 –

答えて

3

どのセッションストアプロバイダを使用していますか? InProc、StateServer?あなたがInProcを使用しているように、と発音します。その場合は、DBにアクセスできないので、StateServerに切り替えることがあなたの答えかもしれません。

ここにはASP.NET load balancing and ASP.NET state serverに関する記事があります。

+0

しかし、なぜそれがFirefoxでうまくいくのでしょうか? – pattyboy1971

+0

おそらく、ロードバランサがサーバーの親和性(おそらく、IP、Cookie、またはレスポンスヘッダーベース)を処理する方法と、異なるブラウザがその情報を新しいウィンドウからサーバーに戻すかどうかが原因です。 –

+0

ご協力ありがとうございます。私は、状態サーバーのオプションを見て、それがどのように動作するかを教えていきます。 – pattyboy1971

1

あなたはスティッキーセッション/アフィニティを使用していると述べました。 1セッション中にIPアドレスが変更される可能性があるため(たとえば、有線ネットワークと無線ネットワーク間でラップトップをドッキングするなど)、ロードバランサがスティッキ性を判断するためにHTTPクッキー(IPアドレスだけでなく)を確認していることを確認できますか。

+0

ネットワーク管理者に再度確認します。 – pattyboy1971

+0

申し訳ありませんが、ポート443とSSLを使用していることを忘れてしまったので、IPを使用する必要があります。 – pattyboy1971

+0

それはあなたの問題かもしれません。あなたは他の答えに記載されている状態サーバーを使用する必要があります。 –