ユーザーのセッションが奇妙に動作しているASP.NET Webサイトに問題があります-セッションデータが表示、非表示、再表示されます。
私は問題が何であるかを知っていると思います:
したがって、ユーザーがサイトにログオンして移動すると、各HTTP呼び出しはいずれかのWebサーバーに送信されるため、サーバーに応じて異なるIDを持つセッション状態レコードを使用できます。実際には、ユーザーは同時に2つの個別のセッションインスタンスを持つことになります。私はこれをデータベースASPStateTempSessionsテーブルで確認したと思います。各セッションCookie IDは2にほぼ一致しているようですnamedレコード(それらのIDは最後の数文字のみが異なり、これはAppIDに基づく修飾子であると信じていますAspStateTempApplicationsテーブル)が数秒以内に作成されました。
したがって、1つのセッションレコードに加えられた変更はそのWebサーバーに対してのみ持続するため、セッション状態は正しく動作しないように見えます。ユーザーが他の負荷分散サーバーに移動すると、セッション値が消えるか、元に戻るように見えます。
解決策は、IISサイトのインスタンスIDを同期することです(たとえば、両方を作成する/ W3SVC/1/Root)、しかし私はIISの詳細設定)でその値を編集しようとしました、そしてそれはOKを保存しましたが、それを変更するまで、サイトはそのサーバーで404を返すだけでした。
私 VBSスクリプトが見つかりました この問題のようですが、IIS 6の場合のみのようなので、試してみるのが心配です。他の誰かがこの状況に遭遇しました= IIS 7.5、そしてどのように修正しましたか?
編集/ソリューション
IISでサイトインスタンスIDを変更した後、IISを再起動するのを忘れたのが私の間違いでした。この後、IDが更新され、ASP.NETセッションが2つのWebサーバーで同期されました。
完全な手順:
c:\windows\system32\iisreset /restart
)LIVE2についても同じことを行います(サイトIDがLIVE1と同じであることを確認します)
サイトIDはサイトファイルの場所に影響することに注意してください。たとえば、ログファイルフォルダーはC:\inetpub\logs\LogFiles\W3SVC10
例えば。
また、各サーバーのIIS構成ファイルのサイトid属性を編集することで、これらの変更を手動で行うことができます。 :C:\Windows\System32\inetsrv\config\applicationHost.config
。管理者特権が必要ですが、その後もリセットが必要です。
あなたの質問から判断すると、セッションデータを追跡する中央セッションステートサーバー(DB?)があるようです。
また、フォーム認証などが機能するために、暗号化に使用されるマシンキーを同期する必要があります。これはセッションの識別にも影響する可能性がありますが、よくわかりません。
さらに、マシン間の共有構成を利用する必要があります。それ自体が異なるマシンキーの問題を修正する可能性があります。
編集:サイトIDを変更したときに、IIS managerを再起動して、Webrootが変更されたかどうかを確認しましたか?構成がIDに接続されている可能性があります。つまり、IDの変更によっても変更されますドキュメントルートなど