ASP.NET:ポップアップブラウザウィンドウとセッションCookie
質問
要約:Windowsエクスプローラーを使用してASP.NET Webサイトを閲覧する場合、ポップアップウィンドウは「借用」しません。親ウィンドウからのセッションCookie。
詳細:
ASP.NET Webサイト(.NET 2.0)で作業しています。 FormsAuthenticationを使用します。セッションを処理するには、Cookieを使用する必要があります。
ページにボタンがあります。ユーザーがクリックすると、ポップアップウィンドウが開きます。ポップアップには、以前に親ブラウザウィンドウから設定されたセッション変数を使用するASPXページが表示されます。 IE(6、7、8)とFirefox 2.0を使用してWebサイトをテストしています。これらのすべてのブラウザーで、ポップアップウィンドウは親ブラウザーウィンドウと同じセッションにアクセスでき、すべてが正常に機能します。
クライアントにポップアップウィンドウにエラーが表示されるというバグが発生しました。ログファイルを見ると、ポップアップページがセッション変数にアクセスしようとした時点でNullReferenceExceptionであることがわかります。クライアントと話して、彼はWindowsエクスプローラーでメインWebサイトを開いたと言いました!!!
テストマシンで問題を再現することができましたが、ポップアップが新しいセッションを使用していることがわかりました。
マシンにはWin XPおよびIE6がインストールされている必要があります! IE7では、Webサイトは問題なく動作します。
解決
ここでの疑いは、Windowsエクスプローラーから開いたとき(これが何を意味するのかを完全に理解しているわけではありません)、送り返されるセッションCookieはどこにも保存されないため、ポップアップウィンドウに含めることはできませんその要求。どうやってこれを回避できるかわかりません。アプリケーションにアクセスするこの手段がサポートされていないことをクライアントに伝えることはできませんか?
他のヒント
IE 8でも同じ問題が発生しましたが、Firefox、Google Chrome、IE 6では発生しません。私の場合、セッションが実際に機能していることがわかります。認証が終了すると、ユーザーは再びログインページにリダイレクトされ、ログインできます...