次の方法で共有


sessionState 要素 (ASP.NET 設定スキーマ)

更新 : 2007 年 11 月

現在のアプリケーションのセッション状態設定値を構成します。

configuration 要素 (全般設定スキーマ)
  system.web 要素 (ASP.NET 設定スキーマ)
    sessionState 要素 (ASP.NET 設定スキーマ)

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name">
    <providers>...</providers>
</sessionState>

属性と要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性

説明

allowCustomSqlDatabase

省略可能な Boolean 属性です。

セッション状態 SQL データベースが ASP.NET の既定のデータベースではなく、カスタム データベースであるかどうかを指定します。false の場合、sqlConnectionString 属性の値として初期カタログもデータベースも指定できません。既定のセッション状態 SQL データベースは、ASPState データベースです。詳細については、「セッション状態モード」を参照してください。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は false です。

cookieless

省略可能な HttpCookieMode 属性です。

Web アプリケーションでの Cookie の使用方法を指定します。

cookieless 属性は次のいずれかの値になります。既定では、UseCookies 値です。

h6bb9cz9.alert_note(ja-jp,VS.90).gifメモ :
AJAX 対応 ASP.NET Web サイトを構成するときは、cookieless 属性では既定値の UseCookies のみを使用してください。URL にエンコードされた Cookie を使用する設定は、ASP.NET AJAX クライアント スクリプト ライブラリではサポートされません。
値説明
AutoDetect ASP.NET は、要求元のブラウザまたはデバイスが Cookie をサポートしているかどうかを判断します。要求元のブラウザまたはデバイスが Cookie をサポートしている場合、AutoDetect は Cookie を使用してユーザー データを保持します。それ以外の場合は、クエリ文字列に識別子が使用されます。ブラウザまたはデバイスが Cookie をサポートしていても、Cookie が現在無効になっている場合、Cookie は要求元の機能によってそのまま使用されます。
UseCookies ブラウザまたはデバイスが Cookie をサポートしているかどうかには関係なく、Cookie によりユーザー データが保持されます。
UseDeviceProfile ASP.NET は、HttpBrowserCapabilities 設定に基づいて、Cookie を使用するかどうかを判断します。HttpBrowserCapabilities 設定が、ブラウザまたはデバイスが Cookie をサポートしていることを示している場合は、Cookie が使用されます。それ以外の場合は、クエリ文字列に識別子が使用されます。
UseUri ブラウザまたはデバイスが Cookie をサポートしているかどうかには関係なく、呼び出し元の機能は、クエリ文字列を使用して識別子を格納します。

cookieName

省略可能な String 属性です。

セッション識別子を格納する Cookie の名前を指定します。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は "ASP.NET_SessionId" です。

customProvider

省略可能な String 型の属性です。

セッション状態データの格納および取得に使用するカスタム セッション状態プロバイダの名前を指定します。プロバイダは、providers 要素で指定します。プロバイダは、セッション状態モードが Custom 値に設定されている場合のみ使用できます。詳細については、「セッション状態モード」を参照してください。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は、空の文字列 ("") です。

mode

省略可能な SessionStateMode 属性です。

セッション状態の値を格納する場所を指定します。詳細については、「セッション状態モード」を参照してください。

mode 属性は次のいずれかの値になります。既定では、InProc 値です。

値説明
Custom セッション状態は、カスタム データ ストアを使用してセッション ステータス情報を格納します。
InProc セッション状態は、ASP.NET ワーカー プロセスのインプロセスです。
Off セッション状態は無効です。
SQLServer セッション状態は、アウトプロセス SQL Server データベースを使用してステータス情報を格納します。
StateServer セッション状態は、アウトプロセス ASP.NET 状態サービスを使用してステータス情報を格納します。

partitionResolverType

省略可能な String 型の属性です。

セッション状態を格納する場所を指定します。partitionResolverType 属性に値を指定すると、sqlConnectionString 属性と stateConnectionString 属性は無視されます。PartitionResolverType プロパティが返す接続文字列は、適切なサーバー位置に接続する各要求で、残りの要求に対して使用されます。接続文字列が有効でない場合、サーバーに対して構成された接続文字列が有効でない場合にスローされる例外と同じ例外がスローされます。このプロパティは、SQL Server モードまたは State Server モードで、複数のバック エンド ノード間のセッション状態データを分割するために使用されます。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は空の文字列です。

regenerateExpiredSessionId

省略可能な Boolean 型の属性です。

有効期限が切れたセッション ID がクライアントによって指定された場合に、セッション ID を再発行するかどうかを指定します。既定では、セッション ID は regenerateExpiredSessionId が有効な場合に cookieless モードに対してのみ再発行されます。詳細については、「IsCookieless」を参照してください。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は true です。

sqlCommandTimeout

省略可能な TimeSpan 型の属性です。

SQL Server のセッション状態モードを使用する SQL コマンドの存続期間タイムアウトを秒単位で指定します。存続期間タイムアウトは、SQL コマンドがアイドル状態になってからキャンセルされるまでの時間 (秒数) です。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は 0:00:30 (30 秒) です。

sqlConnectionString

省略可能な String 型の属性です。

SQL Server を実行しているコンピュータの接続文字列を指定します。この属性は、mode 属性が SQLServer 値に設定されている場合に必要です。詳細については、「セッション状態モード」を参照してください。

この属性を connectionStrings ノードの名前付き sqlConnectionString に設定するか、次の構文を使用することができます。

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
h6bb9cz9.alert_note(ja-jp,VS.90).gifメモ :
SQLServer モードを使用しているときのアプリケーションのセキュリティを強化するには、保護された構成を使用して、構成の sessionState セクションを暗号化することにより sqlConnectionString 値を保護します。

既定値は "data source=127.0.0.1;Integrated Security=SSPI" です。

stateConnectionString

省略可能な String 型の属性です。

セッション状態が格納される先のリモートのサーバー名またはアドレスとポートを指定します。ポート値は 42424 とする必要があります。この属性は、mode が StateServer 値である場合に必要です。ASP.NET 状態サービスが、セッション ステータス情報を格納するリモート サーバーで実行されていることを確認します。このサービスは、ASP.NET と共にインストールされ、既定では %windir%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe にあります。詳細については、「セッション状態モード」を参照してください。

h6bb9cz9.alert_note(ja-jp,VS.90).gifメモ :
StateServer モードを使用しているときのアプリケーションのセキュリティを強化するには、保護された構成を使用して、構成の sessionState セクションを暗号化することにより stateConnectionString 値を保護します。

既定値は "tcpip=127.0.0.1:42424" です。

stateNetworkTimeout

省略可能な TimeSpan 型の属性です。

Web サーバーと状態サーバーの間の TCP/IP ネットワーク接続がアイドル状態になってから、要求がキャンセルされるまでの時間 (秒数) を指定します。この属性は、mode 属性が StateServer に設定されている場合に使用されます。

既定値は、10 秒です。

timeout

省略可能な TimeSpan 型の属性です。

アイドル状態のセッションが破棄されるまでの時間 (分の値) を指定します。timeout 属性は、インプロセス モードおよび状態サーバー モードの場合は 525,600 分 (1 年) より大きい値に設定することはできません。

セッション timeout 構成設定は ASP.NET ページだけに適用されます。セッション timeout 値を変更しても、ASP ページのセッション タイムアウトには影響しません。同様に、ASP ページのセッション タイムアウトを変更しても、ASP.NET ページのセッション タイムアウトには影響しません。

既定値は、20 分です。

useHostingIdentity

省略可能な Boolean 属性です。

セッション状態をホスト ID に戻すのか、クライアント偽装を使用するのかを指定します。

true の場合、ASP.NET は次のプロセス資格情報のいずれかを使用してセッション状態ストアに接続します。

  • ホスト プロセス。これは、Microsoft Internet Information Services (IIS) Version 5 および 5.1 の ASPNET か、Microsoft Windows Server 2003 の NETWORK SERVICE です。

  • アプリケーション偽装 ID。これは、次の構成が使用されるときに使用されます。

    <identity impersonate="true" userName="domain\username" password="secure password" />

false の場合、ASP.NET は現在の要求のオペレーティング システム スレッドに現在関連付けられている資格情報を使用して、セッション状態ストアに接続します。クライアント偽装の場合、ASP.NET はブラウザでネゴシエートされたセキュリティ資格情報を使用してセッション状態ストアに接続します。false の場合、ASP.NET はセッション状態ストアに接続する際にプロセス ID またはアプリケーション偽装 ID に戻りません。詳細については、「ASP.NET の偽装」を参照してください。

この属性は .NET Framework Version 2.0 で新たに追加されました。

既定値は true です。

h6bb9cz9.alert_note(ja-jp,VS.90).gifメモ :
.NET Framework Version 1.1 では、mode 属性が SQLServer に設定され、クライアント偽装が有効であった場合、ASP.NET は ASP.NET クライアント偽装からのクライアント資格情報を使用して、SQL Server を実行しているコンピュータに接続しました。

継承された属性

省略可能な属性です。

すべてのセクション要素が継承する属性です。

子要素

要素

説明

providers

カスタム セッション状態ストア プロバイダのコレクションを格納します。

親要素

要素

説明

configuration

共通言語ランタイムおよび .NET Framework ベースのアプリケーションで使用されるすべての構成ファイルで必要なルート要素です。

system.web

構成ファイルの ASP.NET 構成設定のルート要素を指定します。ASP.NET Web アプリケーションを構成する要素やアプリケーションの動作を制御する要素が含まれます。

解説

<sessionState> 要素は、現在のアプリケーションのセッション状態設定値を構成します。

新しいクライアントが Web アプリケーションとの対話を開始すると、セッション ID が発行されます。セッション ID は、セッションが有効な間に同じクライアントから送信される、それ以降のすべての要求に関連付けられます。この ID は、要求間でクライアント セッションに関連付けられているサーバー側の状態を維持するために使用されます。<sessionState> 要素は、ASP.NET アプリケーションが各クライアントのためにこの関連付けを確立して維持する方法を制御します。

この機構は非常に柔軟性があり、特に、アウトプロセスでセッション ステータス情報をホストし、Cookie を使用せずに状態を追跡することが可能になります。

URI にセッション ID を含めて送信する場合は、URI の最大サイズを超過できます。匿名識別チケット、フォーム認証チケット、セッション ID、およびユーザー データの組み合わせが URI で許容される最大長より長い場合、要求は "400-Bad Request" エラーを生成して失敗します。

StateServer モードを使用するには

  1. セッション ステータス情報を格納するリモート サーバーでは、ASP.NET 状態サービスが実行されていることを確認します。

    ASP.NET 状態サービスは ASP.NET と共にインストールされ、既定では %windir%\Microsoft.NET\Framework\version\aspnet_state.exe にあります。

  2. アプリケーションの Web.config ファイルで、mode を "StateServer" に設定し、stateConnectionString を "tcpip=dataserver:42424" などの値に設定します。

SQLServer モードを使用するには

  1. セッション状態を格納する SQL Server を実行しているコンピュータで、InstallSqlState.sql を実行します。

    既定では、InstallSqlState.sql は %windir%\Microsoft.NET\Framework\version にあります。

    これにより、ASPState という名前のデータベースと新しいストアド プロシージャが作成されます。また、TempDB データベース内に、ASPStateTempApplications テーブルと ASPStateTempSessions という名前のテーブルが作成されます。

  2. アプリケーションの Web.config ファイルで、mode を "SQLServer" に設定し、sqlConnectionString を "data source=localhost;Integrated Security=SSPI;" などの値に設定します。

    h6bb9cz9.alert_note(ja-jp,VS.90).gifメモ :

    Aspnet_regsql.exe を使用すると、これらの手順を完了できます。

アプリケーション コード内の <sessionState> 要素の構成値のアクセスおよび変更方法については、SessionStateSection および System.Web.SessionState を参照してください。

既定の構成

次の既定の <sessionState> 要素は、Machine.config ファイルまたはルートの Web.config ファイルでは明示的に構成されません。ただし、これはアプリケーションにより返される既定の構成です。

<sessionState 
   mode="InProc" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   stateNetworkTimeout="10" 
   sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" 
   sqlCommandTimeout="30" 
   customProvider="" 
   cookieless="UseCookies" 
   cookieName="ASP.NET_SessionId" 
   timeout="20" 
   allowCustomSqlDatabase="false" 
   regenerateExpiredSessionId="true" 
   partitionResolverType="" 
   useHostingIdentity="true">
   <providers>
      <clear />
   </providers>
</sessionState>

使用例

セッション状態構成設定を指定する方法を次の例に示します。

<sessionState
   mode="SQLServer"
   cookieless="true"
   sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
   sqlCommandTimeout="10" />

要素情報

構成セクション ハンドラ

SessionStateSection

構成メンバ

System.Web.SessionState

構成できる場所

Machine.config

ルート レベルの Web.config

アプリケーション レベルの Web.config

必要条件

Microsoft Internet Information Services バージョン 5.0、5.1、または 6.0

.NET Framework Version 1.0、1.1、または 2.0

Microsoft Visual Studio 2003 または Visual Studio 2005

参照

処理手順

方法 : Location の設定を使用して特定のディレクトリを構成する

方法 : ASP.NET 構成設定をロックする

概念

ASP.NET の偽装

セッション状態モード

セッション状態の保護

ASP.NET 構成ファイルの階層と継承

ASP.NET 構成の保護

ASP.NET の構成のシナリオ

参照

system.web 要素 (ASP.NET 設定スキーマ)

sessionState の providers 要素 (ASP.NET 設定スキーマ)

configuration 要素 (全般設定スキーマ)

System.Configuration

System.Web.Configuration

SessionStateSection

System.Web.SessionState

その他の技術情報

保護された構成を使用した構成情報の暗号化

全般構成設定 (ASP.NET)

ASP.NET 構成設定

ASP.NET Web サイトの管理

ASP.NET 構成 API