IHttpSessionState インターフェイス
アセンブリ: System.Web (system.web.dll 内)


セッション状態コンテナによって、現在のセッションのセッション状態値と関連情報にアクセスできます。セッション状態コンテナに含まれるセッション情報は、Session プロパティを使用し、HttpSessionState クラスを介してアプリケーション コードに公開されます。HttpSessionState クラスは、セッション状態コンテナのラッパー クラスです。
セッション状態コンテナの ASP.NET の実装は HttpSessionStateContainer クラスです。要求の開始時の AcquireRequestState イベントで、SessionStateModule は HttpSessionStateContainer オブジェクトを作成して値を格納し、現在の HttpContext に割り当てます。要求の最後の ReleaseRequestState イベントで、SessionStateModule は現在の HttpContext から HttpSessionStateContainer オブジェクトを取得し、セッション値をセッション ストアに書き込む、セッションを破棄するなどの必要な処理を実行します。リダイレクトなどによって要求が突然終了した場合、SessionStateModule は EndRequest メソッドを呼び出して同じクリーンアップを実行します。
カスタムのセッション状態コンテナを作成するには、IHttpSessionState インターフェイスを実装するクラスを作成します。カスタムのセッション状態コンテナを作成する場合は、SessionStateModule もカスタム モジュールに置き換える必要があります。カスタム モジュールはカスタムのセッション状態コンテナのインスタンスを作成し、AddHttpSessionStateToContext メソッドを使用して現在の HttpContext に追加します。カスタムのセッション状態モジュールの例については、SessionStateUtility クラスの概要を参照してください。

IHttpSessionState インターフェイスを実装し、MySessionState という新しいセッション状態コンテナのクラスを作成するコード例を次に示します。
Imports System Imports System.Web Imports System.Web.SessionState Imports System.Collections Imports System.Collections.Specialized Imports System.Text Imports System.Threading Imports System.Globalization Namespace Samples.AspNet.SessionState Public NotInheritable Class MySessionState Implements IHttpSessionState Const MAX_TIMEOUT As Integer = 24 * 60 ' Timeout cannot exceed 24 hours. Dim pId As String Dim pSessionItems As ISessionStateItemCollection Dim pStaticObjects As HttpStaticObjectsCollection Dim pTimeout As Integer Dim pNewSession As Boolean Dim pCookieMode As HttpCookieMode Dim pMode As SessionStateMode Dim pAbandon As Boolean Dim pIsReadonly As Boolean Public Sub New(id As String, _ sessionItems As ISessionStateItemCollection, _ staticObjects As HttpStaticObjectsCollection, _ timeout As Integer, _ newSession As Boolean, _ cookieMode As HttpCookieMode, _ mode As SessionStateMode, _ isReadonly As Boolean) pId = id pSessionItems = sessionItems pStaticObjects = staticObjects pTimeout = timeout pNewSession = newSession pCookieMode = cookieMode pMode = mode pIsReadonly = isReadonly End Sub Public Property Timeout As Integer Implements IHttpSessionState.Timeout Get Return pTimeout End Get Set If value <= 0 Then _ Throw New ArgumentException("Timeout value must be greater than zero.") If value > MAX_TIMEOUT Then _ Throw New ArgumentException("Timout cannot be greater than " & MAX_TIMEOUT.ToString()) pTimeout = value End Set End Property Public ReadOnly Property SessionID As String Implements IHttpSessionState.SessionID Get Return pId End Get End Property Public ReadOnly Property IsNewSession As Boolean Implements IHttpSessionState.IsNewSession Get Return pNewSession End Get End Property Public ReadOnly Property Mode As SessionStateMode Implements IHttpSessionState.Mode Get Return pMode End Get End Property Public ReadOnly Property IsCookieless As Boolean Implements IHttpSessionState.IsCookieLess Get Return CookieMode = HttpCookieMode.UseUri End Get End Property Public ReadOnly Property CookieMode As HttpCookieMode Implements IHttpSessionState.CookieMode Get Return pCookieMode End Get End Property ' ' Abandon marks the session as abandoned. The IsAbandoned property is used by the ' session state module to perform the abandon work during the ReleaseRequestState event. ' Public Sub Abandon() Implements IHttpSessionState.Abandon pAbandon = True End Sub Public ReadOnly Property IsAbandoned As Boolean Get Return pAbandon End Get End Property ' ' Session.LCID exists only to support legacy ASP compatibility. ASP.NET developers should use ' Page.LCID instead. ' Public Property LCID As Integer Implements IHttpSessionState.LCID Get Return Thread.CurrentThread.CurrentCulture.LCID End Get Set Thread.CurrentThread.CurrentCulture = CultureInfo.ReadOnly(new CultureInfo(value)) End Set End Property ' ' Session.CodePage exists only to support legacy ASP compatibility. ASP.NET developers should use ' Response.ContentEncoding instead. ' Public Property CodePage As Integer Implements IHttpSessionState.CodePage Get If Not HttpContext.Current Is Nothing Then Return HttpContext.Current.Response.ContentEncoding.CodePage Else Return Encoding.Default.CodePage End If End Get Set If Not HttpContext.Current Is Nothing Then _ HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value) End Set End Property Public ReadOnly Property StaticObjects As HttpStaticObjectsCollection _ Implements IHttpSessionState.StaticObjects Get Return pStaticObjects End Get End Property Public Property Item(name As String) As Object Implements IHttpSessionState.Item Get Return pSessionItems(name) End Get Set pSessionItems(name) = value End Set End Property Public Property Item(index As Integer) As Object Implements IHttpSessionState.Item Get Return pSessionItems(index) End Get Set pSessionItems(index) = value End Set End Property Public Sub Add(name As String, value As Object) Implements IHttpSessionState.Add pSessionItems(name) = value End Sub Public Sub Remove(name As String) Implements IHttpSessionState.Remove pSessionItems.Remove(name) End Sub Public Sub RemoveAt(index As Integer) Implements IHttpSessionState.RemoveAt pSessionItems.RemoveAt(index) End Sub Public Sub Clear() Implements IHttpSessionState.Clear pSessionItems.Clear() End Sub Public Sub RemoveAll() Implements IHttpSessionState.RemoveAll Clear() End Sub Public ReadOnly Property Count As Integer Implements IHttpSessionState.Count Get Return pSessionItems.Count End Get End Property Public ReadOnly Property Keys As NameObjectCollectionBase.KeysCollection _ Implements IHttpSessionState.Keys Get Return pSessionItems.Keys End Get End Property Public Function GetEnumerator() As IEnumerator Implements IHttpSessionState.GetEnumerator Return pSessionItems.GetEnumerator() End Function Public Sub CopyTo(items As Array, index As Integer) Implements IHttpSessionState.CopyTo For Each o As Object In items items.SetValue(o, index) index += 1 Next End Sub Public ReadOnly Property SyncRoot As Object Implements IHttpSessionState.SyncRoot Get Return Me End Get End Property Public ReadOnly Property IsReadOnly As Boolean Implements IHttpSessionState.IsReadOnly Get Return pIsReadonly End Get End Property Public ReadOnly Property IsSynchronized As Boolean Implements IHttpSessionState.IsSynchronized Get Return False End Get End Property End Class End Namespace
using System; using System.Web; using System.Web.SessionState; using System.Collections; using System.Collections.Specialized; using System.Text; using System.Threading; using System.Globalization; namespace Samples.AspNet.SessionState { public sealed class MySessionState : IHttpSessionState { const int MAX_TIMEOUT = 24 * 60; // Timeout cannot exceed 24 hours. string pId; ISessionStateItemCollection pSessionItems; HttpStaticObjectsCollection pStaticObjects; int pTimeout; bool pNewSession; HttpCookieMode pCookieMode; SessionStateMode pMode; bool pAbandon; bool pIsReadonly; public MySessionState(string id, ISessionStateItemCollection sessionItems, HttpStaticObjectsCollection staticObjects, int timeout , bool newSession , HttpCookieMode cookieMode, SessionStateMode mode, bool isReadonly) { pId = id; pSessionItems = sessionItems; pStaticObjects = staticObjects; pTimeout = timeout; pNewSession = newSession; pCookieMode = cookieMode; pMode = mode; pIsReadonly = isReadonly; } public int Timeout { get { return pTimeout; } set { if (value <= 0) throw new ArgumentException("Timeout value must be greater than zero."); if (value > MAX_TIMEOUT) throw new ArgumentException("Timout cannot be greater than " + MAX_TIMEOUT.ToString()); pTimeout = value; } } public string SessionID { get { return pId; } } public bool IsNewSession { get { return pNewSession; } } public SessionStateMode Mode { get { return pMode; } } public bool IsCookieless { get { return CookieMode == HttpCookieMode.UseUri; } } public HttpCookieMode CookieMode { get { return pCookieMode; } } // // Abandon marks the session as abandoned. The IsAbandoned property is used by the // session state module to perform the abandon work during the ReleaseRequestState event. // public void Abandon() { pAbandon = true; } public bool IsAbandoned { get { return pAbandon; } } // // Session.LCID exists only to support legacy ASP compatibility. ASP.NET developers should use // Page.LCID instead. // public int LCID { get { return Thread.CurrentThread.CurrentCulture.LCID; } set { Thread.CurrentThread.CurrentCulture = CultureInfo.ReadOnly(new CultureInfo(value)); } } // // Session.CodePage exists only to support legacy ASP compatibility. ASP.NET developers should use // Response.ContentEncoding instead. // public int CodePage { get { if (HttpContext.Current != null) return HttpContext.Current.Response.ContentEncoding.CodePage; else return Encoding.Default.CodePage; } set { if (HttpContext.Current != null) HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value); } } public HttpStaticObjectsCollection StaticObjects { get { return pStaticObjects; } } public object this[string name] { get { return pSessionItems[name]; } set { pSessionItems[name] = value; } } public object this[int index] { get { return pSessionItems[index]; } set { pSessionItems[index] = value; } } public void Add(string name, object value) { pSessionItems[name] = value; } public void Remove(string name) { pSessionItems.Remove(name); } public void RemoveAt(int index) { pSessionItems.RemoveAt(index); } public void Clear() { pSessionItems.Clear(); } public void RemoveAll() { Clear(); } public int Count { get { return pSessionItems.Count; } } public NameObjectCollectionBase.KeysCollection Keys { get { return pSessionItems.Keys; } } public IEnumerator GetEnumerator() { return pSessionItems.GetEnumerator(); } public void CopyTo(Array items, int index) { foreach (object o in items) items.SetValue(o, index++); } public object SyncRoot { get { return this; } } public bool IsReadOnly { get { return pIsReadonly; } } public bool IsSynchronized { get { return false; } } } }


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IHttpSessionState プロパティ

名前 | 説明 | |
---|---|---|
![]() | CodePage | 現在のセッションのコード ページ識別子を取得または設定します。 |
![]() | 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 | セッション状態プロバイダがセッションを終了するまでの、要求間で許容されるタイムアウト時間 (分単位) を取得または設定します。 |

IHttpSessionState メソッド

名前 | 説明 | |
---|---|---|
![]() | Abandon | 現在のセッションを終了します。 |
![]() | Add | 新しい項目をセッション状態のコレクションに追加します。 |
![]() | Clear | セッション状態項目のコレクションからすべての値をクリアします。 |
![]() | CopyTo | セッション状態項目値のコレクションを 1 次元配列にコピーします。コピー操作は、指定した配列内のインデックスから始まります。 |
![]() | GetEnumerator | 現在のセッションのすべてのセッション状態項目値を読み取るために使用する列挙子を返します。 |
![]() | Remove | セッション状態項目のコレクションから項目を削除します。 |
![]() | RemoveAll | セッション状態項目のコレクションからすべての値をクリアします。 |
![]() | RemoveAt | セッション状態項目のコレクションの指定したインデックス位置にある項目を削除します。 |

IHttpSessionState メンバ
カスタムのセッション状態コンテナを実装するコントラクトを定義します。
IHttpSessionState データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | CodePage | 現在のセッションのコード ページ識別子を取得または設定します。 |
![]() | 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 次元配列にコピーします。コピー操作は、指定した配列内のインデックスから始まります。 |
![]() | GetEnumerator | 現在のセッションのすべてのセッション状態項目値を読み取るために使用する列挙子を返します。 |
![]() | Remove | セッション状態項目のコレクションから項目を削除します。 |
![]() | RemoveAll | セッション状態項目のコレクションからすべての値をクリアします。 |
![]() | RemoveAt | セッション状態項目のコレクションの指定したインデックス位置にある項目を削除します。 |

Weblioに収録されているすべての辞書からIHttpSessionStateを検索する場合は、下記のリンクをクリックしてください。

- IHttpSessionStateのページへのリンク