次の方法で共有


SessionStateSection クラス

Web アプリケーションのセッション状態を構成します。

構文

class SessionStateSection : ConfigurationSectionWithCollection  

メソッド

次の表に、SessionStateSection クラスによって公開されるメソッドの一覧を示します。

名前 説明
[追加] (ConfigurationSectionWithCollection から継承。)
Clear (ConfigurationSectionWithCollection から継承。)
Get (ConfigurationSectionWithCollection から継承。)
GetAllowDefinition (ConfigurationSection から継承。)
GetAllowLocation (ConfigurationSection から継承。)
削除 (ConfigurationSectionWithCollection から継承。)
RevertToParent (ConfigurationSection から継承。)
SetAllowDefinition (ConfigurationSection から継承。)
SetAllowLocation (ConfigurationSection から継承。)

プロパティ

次の表は、SessionStateSection クラスによって公開されるプロパティの一覧です。

名前 説明
AllowCustomSqlDatabase 読み取り/書き込みの boolean 値。 ユーザーが SqlConnectionString プロパティで初期カタログ値を指定できる場合は true、それ以外の場合は、false です。 既定値は、false です。
Cookieless クライアント セッションを識別するために Cookie を使用する方法を構成する読み取り/書き込みの sint32 値。 使用できる値の一覧は、後述の「注釈」セクションに示します。 注: セッション状態がクライアントをサーバー セッションに関連付ける一意の ID を格納するには、クライアントに HTTP Cookie を格納するか、URL でセッション ID をエンコードする方法の 2 つの方法があります。 セッション ID を Cookie に格納する方が安全ですが、Cookie をサポートするにはクライアント ブラウザーが必要です。 さまざまなモバイル デバイスなど、Cookie をサポートしていないクライアントを許可するアプリケーションの場合、セッション ID が URL に格納される場合があります。 URL オプションにはいくつかの欠点があります。 サイト上のリンクを相対値にし、新しいクエリ文字列値を使用してセッションの開始時にページをリダイレクトする必要があります。 また、セキュリティ攻撃で使用できるクエリ文字列内のセッション ID も公開されます。 Cookie をサポートしないクライアントをサポートする必要がある場合にのみ、Cookie レス モードを使用する必要があります。
CookieName セッション識別に使用する HTTP Cookie の名前を指定する読み取り/書き込み string 値。 既定は "ASP.NET_SessionId" です。
CustomProvider Mode プロパティが Custom に設定されている場合に使用される、Providers プロパティのカスタム プロバイダーの名前を指定する読み取り/書き込み string 値。
Location (ConfigurationSection から継承。)キー プロパティ。
Mode セッション状態を格納する場所を指定する読み取り/書き込み sint32 値。 使用できる値の一覧は、後述の「注釈」セクションに示します。 注: Mode プロパティは必須ではなく、構成階層内の上位レベルまたは既定値から継承できます。 ただし、構成ハンドラーは常に、セクションの現在の継承された値に基づいてモードを書き出します。
PartitionResolverType Mode プロパティが SQLServer または StateServer に設定されている場合に、セッション状態データを複数のバックエンド ノードに分割するリゾルバー タイプの完全修飾名を含む読み取り/書き込み string 値。 注: このプロパティを指定すると、プロパティ SqlConnectionStringStateConnectionString プロパティは無視されます。 PartitionResolverType によって返された接続文字列は、リクエストの残りの部分で適切なサーバーの場所に接続するためにすべてのリクエストで使用されます。 接続文字列が無効な場合、ASP.NET は、サーバーに対して構成された接続文字列が無効な場合にスローされるのと同じ例外をスローします。
Path (ConfigurationSection から継承。)キー プロパティ。
Providers ProviderSettings セッション状態関連のサービスを実行するプロバイダーの名前と種類を含む値です。
RegenerateExpiredSessionId 読み取り/書き込みの boolean 値。 期限切れのセッション ID がクライアントによって指定されたときにセッション ID が再生成される場合は true、それ以外の場合は false です。 既定値は、false です。 注: 既定では、このプロパティが有効になっている場合、Cookie レス URL のみが再発行されます。
SectionInformation (ConfigurationSection から継承。)
SessionIDManagerType セッション ID マネージャーの完全修飾型を指定する読み取り/書き込み string 値。
SqlCommandTimeout SQL Server セッション状態モードを使用する SQL コマンドのタイムアウトを指定する読み取り/書き込み datetime 値。 既定値は 30 秒です。
SqlConnectionString SQL Server への接続文字列を含む読み取り/書き込み string 値。 既定値は "data source=localhost;Integrated Security=SSPI" です。 このプロパティは、Mode プロパティが SQLServer に設定されている場合に必要です。
StateConnectionString セッション状態がリモートに格納されるときに、サーバー名とポートを指定する読み取り/書き込み string 値。 既定値は "tcpip=loopback:42424" です。 このプロパティは、Mode プロパティが StateServer に設定されている場合に必要です。 注: セッション状態情報を格納するリモート サーバーで、ASP.NET 状態サービスが実行されていることを確認します。 このサービスは ASP.NET とともにインストールされ、デフォルトでは [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe にあります。 既定では、このサービスは手動で開始するように構成されています。 起動時の動作を [自動] に変更する必要があります。
StateNetworkTimeout Web サーバーと状態サーバーの間のネットワーク接続が、セッションが破棄されるまでにアイドル状態で再メインできる時間を秒単位で指定する読み取り/書き込み datetime 値。 このプロパティは、Mode プロパティが StateServer に設定されている場合に必要です。 既定は 10 秒です。
Timeout 非アクティブのためセッションが期限切れになる時間を分単位で指定する読み取り/書き込み datetime 値。 既定値は 20 分です。 注: Timeoutプロパティを 525,601 分 (1 年) より大きい値に設定することはできません。
UseHostingIdentity 読み取り/書き込みの boolean 値。 Windows 認証とホスト プロセス ID (ASP.NET または Windows サービス ID) がリモート接続に対して有効になっている場合は true、セッション状態がクライアント偽装を使用できる場合にそれを使用する場合は false です。 既定値は、true です。 注: この設定では、ドメイン全体または一連のドメイン ユーザーではなく、ASP.NET ワーカー プロセスまたはアプリケーション ID にのみデータベース アクセスを許可することで、統合 Windows 認証の管理が簡素化されます。

サブクラス

このクラスにはサブクラスが含まれていません。

解説

新しいクライアントが Web アプリケーションとの対話を開始すると、セッション ID が発行され、セッションが有効な間に同じクライアントからの後続のすべての要求に関連付けられます。 この ID は、要求間でクライアント セッションに関連付けられているサーバー側の状態をメインするために使用されます。 SessionStateSection クラスは、ASP.NET アプリケーションが各クライアントに代わってこの関連付けを確立およびメンテナンスする方法を制御します。

次の表に、Cookieless プロパティとして使用できる値の一覧を示します。 既定値は 1 (UseCookies) です。

Value キーワード 説明
0 UseUri セッション ID は、Uniform Resource Identifier (URI) リクエストにクエリ文字列として埋め込まれ、URI は最初にリクエストされた URL にリダイレクトされます。 変更された URI は要求はセッションの有効期間使用されるため、Cookie は不要です。 注: UseUri モードを使用する場合は、RegenerateExpiredSessionId プロパティを true に設定する必要があります。 これにより、Web サーバーによるトークンの有効期間の設定と再生成が可能になるため、潜在的な攻撃者が cookie を取り込んで、Web サーバーのコンテンツにアクセスするために使用できる時間が少なくなります。 また、Timeout プロパティをデフォルトの 20 分未満に変更することも検討してください。
1 UseCookies セッション ID は、ユーザーが Web サイトに接続している間、クライアントの HTTP Cookie に格納されます。 Cookie は、クライアントと Web サーバー間のすべての要求の HTTP ヘッダーで渡され、リダイレクトを必要としないため、セッションの状態を追跡する方が効率的です。 さらに、ユーザーが別のサイトにアクセスするためにサイトを離れた後、元のサイトに戻った場合は、状態を保持します。 注: 潜在的な攻撃者が Cookie をキャプチャして Web サイト コンテンツにアクセスする時間を短縮できるように、Timeout プロパティを既定値の 20 分未満に変更することを検討してください。
2 AutoDetect セッション ID は、ブラウザーとのハンドシェイクによって Cookie が格納される可能性があることを確認した後にのみ、クライアントの HTTP Cookie に格納されます。 注: AutoDetect モードを使用する場合は、RegenerateExpiredSessionId プロパティを true に設定する必要があります。 これにより、Web サーバーによるトークンの有効期間の設定と再生成が可能になるため、潜在的な攻撃者が cookie を取り込んで、Web サーバーのコンテンツにアクセスするために使用できる時間が少なくなります。 また、Timeout プロパティをデフォルトの 20 分未満に変更することも検討してください。
3 UseDeviceProfile クライアント デバイス プロファイルが Cookie をサポートしている場合、セッション ID はクライアントの HTTP Cookie に格納されます。それ以外の場合、Cookie は使用されません。 デバイス プロファイルが Cookie をサポートしている場合は、ユーザーが Cookie のサポートを無効にした場合でも使用されます。 この設定を使用して、Cookie レス ID が必要なクライアント (モバイル ブラウザーなど) でのみ使用されるようにします。 注: UseDeviceProfile モードを使用する場合は、RegenerateExpiredSessionId プロパティを true に設定する必要があります。 これにより、Web サーバーによるトークンの有効期間の設定と再生成が可能になるため、潜在的な攻撃者が cookie を取り込んで、Web サーバーのコンテンツにアクセスするために使用できる時間が少なくなります。 また、Timeout プロパティをデフォルトの 20 分未満に変更することも検討してください。

次の表に、Mode プロパティとして使用できる値の一覧を示します。 既定値は 1 (InProc) です。

Value キーワード 説明
0 Off セッション状態は無効です。
1 InProc ASP.NET アプリケーションのセッション状態は、アプリケーションが実行されるワーカー プロセスに保存されます。

インプロセス セッション状態は、最速の組み込み状態ストレージ モードです。 ただし、セッションに保存するデータが増えると、より多くの Web サーバー メモリが消費され、パフォーマンスが低下する可能性があります。

ワーカー プロセスがリサイクルされると、インプロセスのセッション状態データが失われます。 ASP.NET アプリケーションでセッション状態データを保持する必要があり、データ アクセスの速度が主な懸念事項ではない場合は、データを格納するためにプロセス外のセッション状態モードを使用することを検討してください。

特定のセッション ID を持つすべての要求が同じ Web サーバーに送信されることを保証するセッション ID アフィニティ スキームがない Web ファームでは、インプロセス セッション状態を使用できません。 注: インプロセス セッション状態が機能するには、ASP.NET 状態サービス (Aspnet_state.exe) が実行されている必要があります。 このサービスは ASP.NET とともにインストールされ、デフォルトでは [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe にあります。 既定では、このサービスは手動で開始するように構成されています。 起動時の動作を [自動] に変更する必要があります。
2 StateServer セッション状態では、プロセス外の ASP.NET 状態サービスを使用して状態情報を格納します。 この構成の利点は、アプリケーション ワーカー プロセスがリサイクルされた場合でも、セッション状態が保持されることです。 この設定を使用する場合は、StateConnectionString プロパティに接続文字列を指定する必要があります。
3 SQLServer セッション状態では、プロセス外の SQL Server データベースを使用して状態情報を格納します。 この構成の利点は、アプリケーションのワーカー プロセスがリサイクルされる場合、または ASP.NET 状態サービスまたは Web サーバーがダウンした場合でも、セッション状態が保持されることです。 この設定を使用する場合は、SqlConnectionString プロパティに接続文字列を指定する必要があります。 注: SQLServer セッション状態モードを使用するには、InstallSqlState.sql SQL スクリプト ([drive:]\WINDOWS\Microsoft.NET にインストールされています) を実行する必要があります。 \Framework\VersionNumber (デフォルトの .NET Framework インストールの一部として) は、セッション状態を保存する SQL Server を実行しているコンピュータ上にあります。 これにより、新しいストアド プロシージャを含む ASPState というデータベースが作成され、TempDB データベースに新しい ASPStateTempApplications テーブルと ASPStateTempSessions テーブルが作成されます。
4 Custom セッション状態では、カスタム データ ストアを使用してセッション状態情報を格納します。 この設定を使用する場合は、CustomProvider プロパティでカスタム プロバイダーの名前を指定する必要があります。

継承階層

ConfigurationSection

ConfigurationSectionWithCollection

SessionStateSection

要件

説明
クライアント - Windows Vista 上の IIS 7.0
- Windows 7 上の IIS 7.5
- Windows 8 上の IIS 8.0
- Windows 10 上の IIS 10.0
[サーバー] - Windows Server 2008 上の IIS 7.0
- Windows Server 2008 R2 上の IIS 7.5
- Windows Server 2012 上の IIS 8.0
- Windows Server 2012 R2 上の IIS 8.5
- Windows Server 2016 上の IIS 10.0
Product - IIS 7.0、IIS 7.5、IIS 8.0、IIS 8.5、IIS 10.0
MOF ファイル WebAdministration.mof

参照

System.Web.Configuration.SystemWebSectionGroup.SessionState
System.Web.SessionState.SessionStateModeConfigurationSectionWithCollection クラス
ProviderSettings クラス
Web アプリケーションの高速、スケーラブル、安全なセッション状態管理