HttpSessionStateとは? わかりやすく解説

HttpSessionState クラス

セッション状態値、セッションレベルの設定および有効期間管理メソッドにアクセスできるようにします。

名前空間: System.Web.SessionState
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public NotInheritable Class
 HttpSessionState
    Implements ICollection, IEnumerable
Dim instance As HttpSessionState
public sealed class HttpSessionState : ICollection,
 IEnumerable
public ref class HttpSessionState sealed :
 ICollection, IEnumerable
public final class HttpSessionState implements
 ICollection, IEnumerable
public final class HttpSessionState implements
 ICollection, IEnumerable
解説解説

ASP.NET は、複数の要求に対して一意のブラウザ セッションに関連付けられた情報を格納するためのセッション状態管理機能を提供します。格納できるのは、キー名または数値インデックスによって参照する値のコレクションです。セッション値およびその機能には、現在の HttpContext の Session プロパティまたは Page の Session プロパティを使用してアクセス可能な HttpSessionState クラスを使用してアクセスします。

セッション データは、一意の識別子を使用して特定のブラウザ セッションに関連付けられます。既定では、この識別子はブラウザの無期限のセッション Cookie に格納されますが、cookieless 属性を true に設定するか、またはアプリケーション構成の sessionState 要素の UseUri を設定して、セッション識別子を URL に格納するようにアプリケーションを構成することもできます。cookieless 属性の UseDeviceProfile の値を指定すると、ASP.NET はブラウザが Cookie をサポートしているかどうかを確認できます。cookieless 属性の AutoDetect の値を指定すると、ASP.NET はブラウザで Cookie が有効になっているかどうかも確認できます。UseDeviceProfile を指定したときに Cookie がサポートされている場合、または AutoDetect を指定したときに Cookie が有効になっている場合はセッション識別子を Cookie に格納でき、それ以外の場合はセッション識別子を URL に格納します。

セッションは最初の要求で開始され、Timeout プロパティに指定された時間 (分) が経過するまでにブラウザが継続して新しい要求を実行する限り、セッション値は保持されます。新しいセッションが始まると、セッションの Start イベントが発生します。このイベントを使用すると、セッションの既定値の設定などのセッションの開始時の追加処理を実行できます。セッションの有効期限が切れると、Abandon メソッドが呼び出されて、ASP.NET アプリケーションがシャットダウンされ、セッションの End イベントが発生します。このイベントを使用すると、必要なクリーンアップを実行できます。End イベントは、セッション状態 mode が InProc に設定されている場合のみ発生します。

パフォーマンス向上のため、Cookie を使用するセッションは、実際にデータが Session オブジェクト内に格納されるまでセッション ストレージを割り当てません。詳細については、SessionID プロパティのトピックを参照してください。

セッション状態が ASP.NET アプリケーションの境界を超えて保持されることはありません。ブラウザが別のアプリケーションに移動した場合、新しいアプリケーションが同じセッション情報を使用することはできません。

セッション値は、既定で Web サーバーのメモリに格納されます。SQL Server データベース、ASP.NET 状態サーバー、またはカスタム サーバーにセッション値を格納することもできます。これによって、ASP.NET、IIS プロセス、または ASP.NET アプリケーションが再起動した場合にもセッション値が保持され、Web ファームのすべてのサーバーでセッション値を使用できるようになります。この動作は、mode 属性をアプリケーション構成の sessionState 要素の有効な SessionStateMode 値に設定することにより構成されます。詳細については、「セッション状態モード」を参照してください。

セッション状態の代替手段としては、アプリケーション状態 (Application プロパティのトピックを参照) および ASP.NET アプリケーションのすべてのユーザーがアクセスできる変数を格納する ASP.NET キャッシュ (System.Web.Caching 名前空間のトピックを参照)、タイムアウトを使用して有効期限切れにすることなく、データ ストアにユーザー値を永続化する ASP.NET プロファイル (System.Web.Profile 名前空間のトピックを参照)、コントロール値を ViewState に保持する ASP.NET の System.Web.UI.WebControls、Cookies、QueryString プロパティ、および Form コレクションを使用して HTTP POST から利用できる HTML フォームのフィールドがあります。セッション状態と他の状態管理の代替手段の違いの詳細については、「ASP.NET の状態管理に関する推奨事項」を参照してください。

使用例使用例

セッション状態から値を設定および取得するコード例を次に示します。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  public void Page_Load(object sender, EventArgs
 args)
  {
    if (!IsPostBack)
    {
      if (Session["address"] == null)
      {
        enterUserInfoPanel.Visible = true;
        userInfoPanel.Visible = false;
      }
      else
      {
        enterUserInfoPanel.Visible = false;
        userInfoPanel.Visible = true;

        SetLabels();
      }
    }
  }

  protected void SetLabels()
  {
    firstNameLabel.Text = Session["firstName"].ToString();
    lastNameLabel.Text = Session["lastName"].ToString();
    addressLabel.Text = Session["address"].ToString();
    cityLabel.Text = Session["city"].ToString();
    stateOrProvinceLabel.Text = Session["stateOrProvince"].ToString();
    zipCodeLabel.Text = Session["zipCode"].ToString();
    countryLabel.Text = Session["country"].ToString();
  }

  protected void EnterInfoButton_OnClick(object
 sender, EventArgs e)
  {
    Session["firstName"] = Server.HtmlEncode(firstNameTextBox.Text);
    Session["lastName"] = Server.HtmlEncode(lastNameTextBox.Text);
    Session["address"] = Server.HtmlEncode(addressTextBox.Text);
    Session["city"] = Server.HtmlEncode(cityTextBox.Text);
    Session["stateOrProvince"] = Server.HtmlEncode(stateOrProvinceTextBox.Text);
    Session["zipCode"] = Server.HtmlEncode(zipCodeTextBox.Text);
    Session["country"] = Server.HtmlEncode(countryTextBox.Text);

    enterUserInfoPanel.Visible = false;
    userInfoPanel.Visible = true;

    SetLabels();
  }

  protected void ChangeInfoButton_OnClick(object
 sender, EventArgs args)
  {
    enterUserInfoPanel.Visible = true;
    userInfoPanel.Visible = true;
  }
</script>

<html >
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
 />
  <title>User Information</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      User information</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server"
 /><br />
    <asp:Panel ID="enterUserInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            First name:</td>
          <td>
            <asp:TextBox ID="firstNameTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            Last name:</td>
          <td>
            <asp:TextBox ID="lastNameTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            Address:</td>
          <td>
            <asp:TextBox ID="addressTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            City:</td>
          <td>
            <asp:TextBox ID="cityTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            State or Province:</td>
          <td>
            <asp:TextBox ID="stateOrProvinceTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            Zip Code/Postal Code:</td>
          <td>
            <asp:TextBox ID="zipCodeTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            Country:</td>
          <td>
            <asp:TextBox ID="countryTextBox" runat="server"
 /></td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="enterInfoButton" runat="server"
 Text="Enter user information" OnClick="EnterInfoButton_OnClick"
 /></td>
        </tr>
      </table>
    </asp:Panel>
    <asp:Panel ID="userInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            Name:</td>
          <td>
            <asp:Label ID="firstNameLabel" runat="server"
 />
            <asp:Label ID="lastNameLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            address:</td>
          <td>
            <asp:Label ID="addressLabel" runat="server" /><br
 />
            <asp:Label ID="cityLabel" runat="server" />
,
            <asp:Label ID="stateOrProvinceLabel" runat="server"
 />
            <asp:Label ID="zipCodeLabel" runat="server" /><br
 />
            <asp:Label ID="countryLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="changeInfoButton" runat="server"
 Text="Change user information" OnClick="ChangeInfoButton_OnClick"
 /></td>
        </tr>
      </table>
    </asp:Panel>
  </form>
</body>
</html>
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
  System.Web.SessionState.HttpSessionState
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
HttpSessionState メンバ
System.Web.SessionState 名前空間
System.Web.Profile
System.Web.Caching
その他の技術情報
セッション状態の概要

HttpSessionState プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ CodePage 現在のセッションの文字セット識別子を取得または設定します。
パブリック プロパティ Contents 現在のセッション状態オブジェクトへの参照を取得します。
パブリック プロパティ CookieMode アプリケーションが Cookie なしのセッション用に構成されているかどうかを示す値を取得します。
パブリック プロパティ Count セッション状態コレクション内の項目の数を取得します。
パブリック プロパティ IsCookieless セッション ID を URL に埋め込むか、HTTP cookie に格納するかを示す値を取得します。
パブリック プロパティ IsNewSession 現在の要求でセッションが作成されたかどうかを示す値を取得します。
パブリック プロパティ IsReadOnly セッションが読み取り専用かどうかを示す値を取得します。
パブリック プロパティ IsSynchronized セッション状態値のコレクションへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。
パブリック プロパティ Item オーバーロードされます。 個別のセッション値を取得または設定します。
パブリック プロパティ Keys セッション状態のコレクションに格納されているすべての値のキーのコレクションを取得します。
パブリック プロパティ LCID 現在のセッションのロケール識別子 (LCID: locale identifier) を取得または設定します。
パブリック プロパティ Mode 現在のセッション状態モードを取得します。
パブリック プロパティ SessionID セッションの一意の識別子を取得します。
パブリック プロパティ StaticObjects ASP.NET アプリケーションの Global.asax ファイルの <object Runat="Server" Scope="Session"/> タグで宣言されているオブジェクトのコレクションを取得します。
パブリック プロパティ SyncRoot セッション状態値のコレクションへのアクセスの同期に使用できるオブジェクトを取得します。
パブリック プロパティ Timeout セッション状態プロバイダがセッションを終了するまでに、要求間で許容される時間 (分単位) を取得または設定します。
参照参照

関連項目

HttpSessionState クラス
System.Web.SessionState 名前空間
System.Web.Profile
System.Web.Caching

その他の技術情報

セッション状態の概要

HttpSessionState メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Abandon 現在のセッションをキャンセルします。
パブリック メソッド Add 新しい項目をセッション状態のコレクションに追加します。
パブリック メソッド Clear セッション状態のコレクションからすべてのキーと値を削除します。
パブリック メソッド CopyTo セッション状態値のコレクションを 1 次元配列にコピーします。コピー操作は、指定した配列内のインデックスから始まります。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド GetEnumerator 現在のセッションのすべてのセッション状態変数名を読み取るために使用する列挙子を返します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Remove セッション状態のコレクションから項目を削除します。
パブリック メソッド RemoveAll セッション状態のコレクションからすべてのキーと値を削除します。
パブリック メソッド RemoveAt セッション状態のコレクションの指定したインデックス位置にある項目を削除します。
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

HttpSessionState クラス
System.Web.SessionState 名前空間
System.Web.Profile
System.Web.Caching

その他の技術情報

セッション状態の概要

HttpSessionState メンバ

セッション状態値、セッションレベルの設定および有効期間管理メソッドにアクセスできるようにします。

HttpSessionState データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ CodePage 現在のセッションの文字セット識別子を取得または設定します。
パブリック プロパティ Contents 現在のセッション状態オブジェクトへの参照を取得します。
パブリック プロパティ CookieMode アプリケーションが Cookie なしのセッション用に構成されているかどうかを示す値を取得します。
パブリック プロパティ Count セッション状態コレクション内の項目の数を取得します。
パブリック プロパティ IsCookieless セッション ID を URL に埋め込むか、HTTP cookie に格納するかを示す値を取得します。
パブリック プロパティ IsNewSession 現在の要求でセッションが作成されたかどうかを示す値を取得します。
パブリック プロパティ IsReadOnly セッションが読み取り専用かどうかを示す値を取得します。
パブリック プロパティ IsSynchronized セッション状態値のコレクションへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。
パブリック プロパティ Item オーバーロードされます。 個別のセッション値を取得または設定します。
パブリック プロパティ Keys セッション状態のコレクションに格納されているすべての値のキーのコレクションを取得します。
パブリック プロパティ LCID 現在のセッションのロケール識別子 (LCID: locale identifier) を取得または設定します。
パブリック プロパティ Mode 現在のセッション状態モードを取得します。
パブリック プロパティ SessionID セッションの一意の識別子を取得します。
パブリック プロパティ StaticObjects ASP.NET アプリケーションの Global.asax ファイルの <object Runat="Server" Scope="Session"/> タグで宣言されているオブジェクトのコレクションを取得します。
パブリック プロパティ SyncRoot セッション状態値のコレクションへのアクセスの同期に使用できるオブジェクトを取得します。
パブリック プロパティ Timeout セッション状態プロバイダがセッションを終了するまでに、要求間で許容される時間 (分単位) を取得または設定します。
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Abandon 現在のセッションをキャンセルします。
パブリック メソッド Add 新しい項目をセッション状態のコレクションに追加します。
パブリック メソッド Clear セッション状態のコレクションからすべてのキーと値を削除します。
パブリック メソッド CopyTo セッション状態値のコレクションを 1 次元配列にコピーします。コピー操作は、指定した配列内のインデックスから始まります。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド GetEnumerator 現在のセッションのすべてのセッション状態変数名を読み取るために使用する列挙子を返します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド Remove セッション状態のコレクションから項目を削除します。
パブリック メソッド RemoveAll セッション状態のコレクションからすべてのキーと値を削除します。
パブリック メソッド RemoveAt セッション状態のコレクションの指定したインデックス位置にある項目を削除します。
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

HttpSessionState クラス
System.Web.SessionState 名前空間
System.Web.Profile
System.Web.Caching

その他の技術情報

セッション状態の概要



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「HttpSessionState」の関連用語

HttpSessionStateのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



HttpSessionStateのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS