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プロパティ、現在のHttpContext、またはSessionのプロパティ、Pageします。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 に格納しますが、URL に設定してセッションの識別子を格納するアプリケーションを構成することも、cookieless属性をtrueまたはUseUrisessionStateアプリケーションの構成要素。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 の値を指定することで cookie がブラウザーでサポートされるかどうかを確認することがUseDeviceProfilecookieless属性。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 の値を指定することで、ブラウザーの cookie を有効にするかどうかを判断することもできますAutoDetectcookieless属性。You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Cookie がサポートされている場合とUseDeviceProfileが指定すると、またはときに有効になっている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. Endイベントが発生した場合にのみ、セッション状態modeに設定されているInProcします。The 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プロパティ) と ASP.NET のキャッシュ (を参照してください、System.Web.Caching名前空間)、ASP.NET アプリケーションのすべてのユーザーによってアクセスできるストア変数は、ASP.NET のプロファイル (を参照してください、System.Web.Profile名前空間)、期限切れにすることがなく、データ ストア内のユーザー値を永続化するタイムアウトを使用してASP.NET System.Web.UI.WebControls、コントロール値を保持する、 ViewState;CookiesQueryStringプロパティと、HTTP から使用できる HTML フォームにフィールドPOSTを使用して、Formコレクション。Alternatives 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 状態管理の推奨事項します。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)

Extension Methods

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.

適用対象

こちらもご覧ください