3

OnSessionStart / Session_Start イベントは、サーバー ファーム環境でまだ 1 回 (合計) しか発生しないのでしょうか? それとも、要求が複数のサーバーによって処理されるため、サーバーごとに 1 回まで発生する可能性がありますか?

ASP.NET / IIS6 または 7

サーバーがスティッキー セッションを使用しているとは限りません。

4

4 に答える 4

5

IIS の既定のインストールでは、答えは「いいえ」です。通常、Session_Start は複数回起動します。クライアントは、ヒットした異なるサーバーごとに新しいセッションを作成します。IIS で Web ガーデン オプションを使用している場合も同様です。

セッションに依存せず、サーバー ファームがある場合は、通常、セッション状態を完全に無効にすることをお勧めします。方法は次のとおりです。 http://support.microsoft.com/kb/306996

セッションに依存している場合、最良のオプションはおそらく ASP.NET State Server Service です。ファーム内のすべてのサーバーは、Session 状態に単一のサーバーを使用し、Session_Start が 1 回だけ起動されるようにします。セットアップに関する多くの背景と詳細については、次を参照してください (具体的な手順については、「ステート サーバー モード」を参照してください): http://aspdotnetdevs.blogspot.com/2008/12/aspnet-session-state-and-modes.html

于 2009-02-24T21:49:46.910 に答える
4

Thomas に加えて: セッション状態の設定によって異なります。

web.configで、<sessionState mode="" >

使用mode="InProc"すると、複数の Session および SessionStart イベント (訪問したサーバーごとに 1 つ) を取得します。

他のモード (StateServer または SqlServer) では、1 つのセッションと 1 つの SessionStart を取得します。SessionEnd イベントはまったく発生しません。

于 2009-02-24T22:29:35.223 に答える
1

ファームでは、Sql Server または State Server を使用して、ファーム内のすべてのサーバーのセッション状態を管理します。OnSessionStart がセッションごとに 1 回だけ呼び出され、常にすべての要求が同じサーバーに戻る必要がないことを保証するよりも、この単一のサーバーが状態を監視しています。

セッション状態を維持するために単一のサーバーを使用することの主な欠点は、OnSessionEnd イベントがなくなることです。

于 2009-02-24T21:24:58.093 に答える
0

私の理解では、リクエストがファーム内のサーバーに到達すると、同じクライアントの今後のリクエストはすべてファーム内の同じサーバーにリダイレクトされる必要があります。

于 2009-02-24T21:21:36.683 に答える