ASP.NET のセッション状態

ASP.NET のセッション状態を使用すると、Web アプリケーションを構成する別の ASP.NET ページにユーザーが移動したときにユーザーの値を格納および取得できます。HTTP は状態のないプロトコルです。つまり、Web サーバーはページに対する HTTP 要求をそれぞれ独立した要求として処理します。既定では、サーバーは以前の要求で使用された変数値の情報を保持しません。その結果、複数の要求間で状態情報を維持する必要がある Web アプリケーション (買い物カゴ、データのスクロールなどを実装するアプリケーション) を構築するのが困難になる場合があります。ASP.NET セッション状態は、一定の時間帯に同じブラウザから受け取った要求を 1 つのセッションと認識し、そのセッションの間、変数値を保持できるようにします。

ASP.NET セッション状態は、すべての ASP.NET アプリケーションで既定で有効になります。ASP.NET セッション状態変数は、Session プロパティを使用して簡単に設定および取得できます。このプロパティは、セッション変数値を、名前によってインデックス付けされたコレクションとして格納します。たとえば、次のコード例では、ユーザーの名を表すセッション変数 FirstName と姓を表すセッション変数 LastName を作成し、それぞれに TextBox コントロールから取得した値を設定します。

Session("FirstName") = FirstNameTextBox.Text
Session("LastName") = LastNameTextBox.Text
Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;

ASP.NET は、既定では、セッション情報を ASP.NET アプリケーションのメモリ空間に格納します。オプションとして、スタンドアロン サービスを使用してセッション情報を格納することにより、ASP.NET アプリケーションを再起動した場合でもセッション情報を保持できます。また、SQL Server を使用すると、セッション情報を Web ファームの複数の Web サーバーで使用できます (この場合も、ASP.NET アプリケーションが再起動されたときにセッションが保護されます)。さらに、カスタム データ ストアに格納することもできます。詳細については、「セッション状態モード」を参照してください。

ASP.NET には、セッション状態以外にも、アプリケーション内のデータを保持するためのオプションがいくつか用意されています。それぞれの特徴については、「ASP.NET の状態管理に関する推奨事項」を参照してください。

このセクションの内容

参照

  • System.Web.SessionState
    アプリケーション データをセッション状態に格納できるようにするクラスとインターフェイスを提供します。

  • Session
    現在の HTTP 要求について、セッションへのアクセスを可能にします。

関連するセクション