2012-03-19 12 views
2

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を生成するために設定する必要がある点はありますか?

答えて

1

は、最終的に(なぜああ、なぜこれらはすべて独立したサイトとユーザーアカウントです?)serverfaultの上で私の答えを見つけた:要するにhttps://serverfault.com/questions/288981/load-balanced-iis-7-5-web-server-asp-net-session-state-problem

:IIS内の各サイトの詳細設定]の下で、設定可能である数値IDがありますが、明らかに、そのサーバー上のサイト作成の順番で1から自動的にインクリメントされます。これらのIDはASPStateTempApplicationsテーブルで使用され、当社のサーバー間で異なるため、セッションIDが異なります。

関連する問題