HttpSessionState HttpSessionState HttpSessionState HttpSessionState Class

定義

セッション状態値、セッションレベルの設定および有効期間管理メソッドにアクセスできるようにします。Provides access to session-state values as well as session-level settings and lifetime management methods.

public ref class HttpSessionState sealed : System::Collections::ICollection
public sealed class HttpSessionState : System.Collections.ICollection
type HttpSessionState = class
    interface ICollection
    interface IEnumerable
Public NotInheritable Class HttpSessionState
Implements ICollection
継承
HttpSessionStateHttpSessionStateHttpSessionStateHttpSessionState
実装

次のコード例では、セッション状態から値を設定して取得します。The following code example sets and retrieves values from session state.

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。This example has a text box that accepts user input, which is a potential security threat. 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。By default, ASP.NET Web pages validate that user input does not include script or HTML elements. 詳細については、「スクリプトによる攻略の概要」を参照してください。For more information, see Script Exploits Overview.

<%@ 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 xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <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>

<%@ Page Language="VB" %>

<%@ 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 Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)
    If Not IsPostBack Then
      If Session("Address") Is Nothing Then
        EnterUserInfoPanel.Visible = True
        UserInfoPanel.Visible = False
      Else
        EnterUserInfoPanel.Visible = False
        UserInfoPanel.Visible = True
        
        SetLabels()
      End If
    End If
  End Sub
  
  Protected Sub 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()
  End Sub
  
  Protected Sub EnterInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    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()
  End Sub
  
  Protected Sub ChangeInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    EnterUserInfoPanel.Visible = True
    UserInfoPanel.Visible = False
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <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>

注釈

ASP.NET は、複数の要求にわたって一意のブラウザーセッションに関連付けられた情報を格納できるように、セッション状態管理を提供します。ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. キー名または数値インデックスによって参照される値のコレクションを格納できます。You can store a collection of values referenced by a key name or by numerical index. セッションの値と機能へのアクセスは、 HttpSessionStateクラスを使用して利用できSessionますPage。このクラスHttpContextには、 Session現在ののプロパティまたはのプロパティを使用してアクセスできます。Access to session values and functionality is available using the HttpSessionState class, which is accessible through the Session property of the current HttpContext, or the Session property of the Page.

セッションデータは、一意の識別子を使用して、特定のブラウザーセッションに関連付けられます。Session data is associated with a specific browser session using a unique identifier. 既定では、この識別子はブラウザーの有効期限が切れていないセッション cookie に格納されますが、 cookieless true属性をまたはUseUri に設定して URL にセッション識別子を格納するようにアプリケーションを構成することもできます。アプリケーション構成の sessionState 要素。By default, this identifier is stored in a non-expiring session cookie in the browser, but you can also configure your application to store the session identifier in the URL by setting the cookieless attribute to true or UseUri in the sessionState element of your application configuration. ASP.NET を使用して、 UseDeviceProfile cookieless属性の値を指定することにより、ブラウザーで cookie がサポートされているかどうかを判断できます。You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. ASP.NET を使用して、 AutoDetect cookieless属性の値を指定することにより、ブラウザーで cookie が有効になっているかどうかを判断することもできます。You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. を指定したときUseDeviceProfileに cookie がサポートされAutoDetectている場合、またはが指定されている場合は、セッション識別子が cookie に格納されます。それ以外の場合は、セッション識別子が URL に格納されます。If cookies are supported when UseDeviceProfile is specified, or enabled when AutoDetect is specified, then the session identifier will be stored in a cookie; otherwise the session identifier will be stored in the URL.

セッションは最初の要求で開始され、セッション値は、 Timeoutプロパティパスで指定された分数が経過する前にブラウザーによって作成された新しい要求がある限り保持されます。Sessions are started during the first request and session values will persist as long as a new request is made by the browser before the number of minutes specified in the Timeout property pass. 新しいセッションが開始されると、 Startセッションイベントが発生します。When a new session begins, the session Start event is raised. このイベントを使用すると、既定のセッション値の設定など、セッションの開始時に追加の作業を実行できます。You can use this event to perform any additional work at the start of a session, such as setting default session values. セッションがタイムアウトAbandonになると、メソッドが呼び出されるか、ASP.NET アプリケーションがシャットダウンされると、 Endセッションイベントが発生します。When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. このイベントを使用して、必要なクリーンアップを実行できます。You can use this event to perform any necessary cleanup. イベントは、セッション状態modeがにInProc設定されている場合にのみ発生します。 EndThe End event is raised only when the session state mode is set to InProc.

パフォーマンスを向上させるために、cookie を使用するセッションでは、データが実際にSessionオブジェクトに格納されるまで、セッションストレージは割り当てられません。To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. 詳細については、SessionID プロパティを参照してください。For more information, see the SessionID property.

セッション状態は、ASP.NET アプリケーションの境界を越えて保持されません。Session state does not persist across ASP.NET application boundaries. ブラウザーが別のアプリケーションに移動した場合、新しいアプリケーションでセッション情報を使用することはできません。If a browser navigates to another application, the session information is not available to the new application.

既定では、セッション値は Web サーバー上のメモリに格納されます。Session values are stored in memory on the Web server, by default. セッションの値は、SQL Server データベース、ASP.NET 状態サーバー、またはカスタムサーバーに格納することもできます。You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. これにより、ASP.NET または IIS プロセスまたは ASP.NET アプリケーションを再起動し、Web ファーム内のすべてのサーバーでセッション値を使用できるようにする場合に、セッション値を保持できます。This enables you to preserve session values in cases where the ASP.NET or IIS process or the ASP.NET application restarts and to make session values available across all the servers in a Web farm. この動作を構成するにはmode 、属性をアプリケーションSessionStateMode構成のsessionState要素の有効な値に設定します。This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. 詳細については、「セッション状態モード」を参照してください。For more information, see Session-State Modes.

セッション状態の代替手段としては、 Applicationアプリケーションの状態 (プロパティを参照) とSystem.Web.Caching ASP.NET cache (名前空間を参照) があります。このキャッシュには、ASP.NET アプリケーションのすべてのユーザーがアクセスできる変数が格納されます (「」を参照してください)。System.Web.Profile名前空間)。タイムアウトを使用してデータストアにユーザーの値を保持します。ASP.NET System.Web.UI.WebControls。のコントロール値を保持しViewStateます。プロパティQueryString 、およびFormコレクションを使用して HTTP POSTから使用できる HTML フォームのフィールド。 CookiesAlternatives to session state include application state (see the Application property) and the ASP.NET cache (see the System.Web.Caching namespace), which store variables that can be accessed by all users of an ASP.NET application; the ASP.NET profile (see the System.Web.Profile namespace), which persists user values in a data store without expiring them using a time-out; ASP.NET System.Web.UI.WebControls, which persist control values in the ViewState; Cookies; the QueryString property; and fields on an HTML form that are available from an HTTP POST using the Form collection. セッション状態とその他の状態管理の相違点の詳細については、「 ASP.NET State management の推奨事項」を参照してください。For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

プロパティ

CodePage CodePage CodePage CodePage

現在のセッションの文字セットの識別子を取得または設定します。Gets or sets the character-set identifier for the current session.

Contents Contents Contents Contents

現在のセッション状態オブジェクトへの参照を取得します。Gets a reference to the current session-state object.

CookieMode CookieMode CookieMode CookieMode

アプリケーションが Cookie なしのセッション用に構成されているかどうかを示す値を取得します。Gets a value that indicates whether the application is configured for cookieless sessions.

Count Count Count Count

セッション状態コレクション内の項目の数を取得します。Gets the number of items in the session-state collection.

IsCookieless IsCookieless IsCookieless IsCookieless

セッション ID を URL に埋め込むか、HTTP クッキーに格納するかを示す値を取得します。Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession IsNewSession IsNewSession IsNewSession

現在の要求でセッションが作成されたかどうかを示す値を取得します。Gets a value indicating whether the session was created with the current request.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

セッションが読み取り専用かどうかを示す値を取得します。Gets a value indicating whether the session is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

セッション状態値のコレクションへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

数値インデックス別のセッション値を取得または設定します。Gets or sets a session value by numerical index.

Item[String] Item[String] Item[String] Item[String]

名前別のセッション値を取得または設定します。Gets or sets a session value by name.

Keys Keys Keys Keys

セッション状態のコレクションに格納されているすべての値のキーのコレクションを取得します。Gets a collection of the keys for all values stored in the session-state collection.

LCID LCID LCID LCID

現在のセッションのロケール識別子 (LCID: locale identifier) を取得または設定します。Gets or sets the locale identifier (LCID) of the current session.

Mode Mode Mode Mode

現在のセッション状態モードを取得します。Gets the current session-state mode.

SessionID SessionID SessionID SessionID

セッションの一意の識別子を取得します。Gets the unique identifier for the session.

StaticObjects StaticObjects StaticObjects StaticObjects

ASP.NET アプリケーションの Global.asax ファイルの <object Runat="Server" Scope="Session"/> タグで宣言されているオブジェクトのコレクションを取得します。Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot SyncRoot SyncRoot SyncRoot

セッション状態値のコレクションへのアクセスの同期に使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout Timeout Timeout Timeout

セッション状態プロバイダーがセッションを終了するまでに、要求間で許容される時間 (分単位) を取得または設定します。Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

メソッド

Abandon() Abandon() Abandon() Abandon()

現在のセッションをキャンセルします。Cancels the current session.

Add(String, Object) Add(String, Object) Add(String, Object) Add(String, Object)

新しい項目をセッション状態のコレクションに追加します。Adds a new item to the session-state collection.

Clear() Clear() Clear() Clear()

セッション状態のコレクションからすべてのキーと値を削除します。Removes all keys and values from the session-state collection.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

セッション状態の値のコレクションを 1 次元配列にコピーします。コピー操作は、指定した配列内のインデックスから始まります。Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

現在のセッションのすべてのセッション状態変数名を読み取るために使用する列挙子を返します。Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(String) Remove(String) Remove(String) Remove(String)

セッション状態のコレクションから項目を削除します。Deletes an item from the session-state collection.

RemoveAll() RemoveAll() RemoveAll() RemoveAll()

セッション状態のコレクションからすべてのキーと値を削除します。Removes all keys and values from the session-state collection.

RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

セッション状態のコレクションの指定したインデックス位置にある項目を削除します。Deletes an item at a specified index from the session-state collection.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

拡張メソッド

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

適用対象

こちらもご覧ください