2

ロード バランサーの背後にある 2 台のサーバーに同じサイトをセットアップしました。私のweb.configファイルには次のものがあります

<sessionState mode="SQLServer" cookieless="false" allowCustomSqlDatabase="true" 
sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist Security 
Info=True;User ID=user;Password=password" timeout="2880" sqlCommandTimeout="10" />

動作しているように見えますが、ログイン時に ASPState テーブルに値が入力されているのを確認できますが、ログイン後に数回更新すると、アクセスしたサーバーに応じて、ログイン中と未ログインの間を行ったり来たりすることがわかります。何か不足していますか?

MVC 4 に組み込まれているデフォルトの webmatrix 認証を使用しています。

4

2 に答える 2

3

これは、サーバー上に異なるMachineKeysがあるか、デフォルト値があることが原因である可能性があります。このため、認証 Cookie は 2 つの異なる方法で暗号化されます。

web.config で machineKey を設定してみてください。machineKey http://aspnetresources.com/tools/machineKeyの生成に役立つツールを次に示します。

于 2012-12-23T09:43:04.067 に答える
2

この投稿で説明しているように、両方のサーバーで同じアプリケーション ID が必要です。

「Sql Server を使用してセッション状態を共有することが期待されるアプリケーションを作成する場合、IIS で構成された同じ ID が必要です。これは、生成されるセッション ID がアプリケーション ID に基づいて生成されるためです。(内部的にアプリケーション ID は次のようなものです。 LM/W3SVC/1 2 つのサーバーは、IIS のアプリケーションごとに異なる ID を持っていました。解決策は、各サーバーの [Web サイトの管理] -> [詳細設定] で ID を変更することです。"

乾杯

于 2012-12-23T13:05:49.523 に答える