HOME >> Tips >> Microsoft.NET >> ASP.NET

[ASP.NET] セッション管理を「StateServer」にする

2014/06/18
文書番号:20173



開発環境   :Visual Studio 2010 ASP.NET 4.0
フレームワーク:.NET Framework 4.0


セッション管理をStateServer(ステートサーバー)に変更する方法です。

デフォルトではセッション管理はインプロセス・モードで動作します。
このモードではワーカープロセス内でセッション情報を管理するためパフォーマンスはいいですが、アプリケーションプールのリサイクルや、 サイトのリサイクルが実行されるとセッション情報も消えてしまいます。

また、複数のサーバーで負荷分散するような構成にする場合には StateServer を1台で構成すると、アクセスするたびに異なるWebサーバーへアクセスしたとしても セッション情報は引き継がれるようになります。

【設定手順】

  1. Web.Configファイルに設定を追加します。
    <system.web> のタグ内に <SessionState> タグを追加します。
    IPアドレスを指定する部分は実際の環境に合わせて指定します。
    セッションタイムアウトを指定する場合は「timeout」の項目を単位:分で指定します。
    
    <configuration>
      <system.web>
        <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20"/>
      </system.web>
    </configuration>
    

    クリックで拡大

  2. この設定のみでWebサイトを配置してアクセスすると以下のエラーになります。
    StateServerが実行されていないためなのでこれを設定します。

    クリックで拡大

  3. Webサーバーのコントロールパネルから[管理ツール]-[サービス]を起動します。
    「ASP.NET 状態サービス」をダブルクリックで開きます。

    クリックで拡大

  4. 「スタートアップの種類」を「自動」に変更して「開始」をクリックします。
    サービスが開始したら「OK」でプロパティ画面を閉じます。

    クリックで拡大

  5. 「ASP.NET 状態サービス」が開始され、スタートアップの種類が「自動」になっていればOKです。

    クリックで拡大

  6. 手順2のエラーが出ずにサイトが表示されればOKです。