2つの実質的に同一のWebサーバー上にホストされている.NETサイトのコレクションがあり、単純なロードバランサで2つの要求を分割しています。あるサーバでハードウェアに障害が発生し、それを置き換えるまでは、すべてうまくいっていました。現在、ロードバランサが接続先のサーバーを切り替えるたびに、アプリケーションからユーザーがログアウトしているため、セッションの問題が発生しています。異なるセッションIDを生成するロードバランサの背後にある.NETアプリケーション?
両方のサーバーのアプリケーションは、セッション状態にSQLServerを使用し、web.configにmachineKeyとsessionStateの値が同じに設定されています。例えば:同じURL、同じアプリケーションプール名、ディスク上にも同じパスを:
<configuration>
<system.web>
<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES" />
<sessionState mode="SQLServer" stateNetworkTimeout="30" stateConnectionString="..." allowCustomSqlDatabase="true" sqlConnectionString="..." cookieless="false" timeout="1441" />
</system.web>
</configuration>
ペアのアプリケーションが私の知る限りIISで同じも設定されています。
ただし、各サーバー(IPによる)で同じサイトに要求すると、2つの一意のSessionID値(ブラウザに同じCookie名を使用)が作成されます。
両方のサーバーで一致するセッションIDを生成するために設定する必要がある点はありますか?