SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の要求のコンテキストからセッション データを取得します。
public:
static System::Web::SessionState::IHttpSessionState ^ GetHttpSessionStateFromContext(System::Web::HttpContext ^ context);
public static System.Web.SessionState.IHttpSessionState GetHttpSessionStateFromContext (System.Web.HttpContext context);
static member GetHttpSessionStateFromContext : System.Web.HttpContext -> System.Web.SessionState.IHttpSessionState
Public Shared Function GetHttpSessionStateFromContext (context As HttpContext) As IHttpSessionState
パラメーター
- context
- HttpContext
セッション データの取得元の HttpContext。
戻り値
現在の要求のセッション データを含む IHttpSessionState の実装のインスタンス。
例
次のコード例は、カスタム セッション状態モジュールの イベントのハンドラー ReleaseRequestState を示しています。 モジュールは、 メソッドを使用して、現在の要求の セッション データを GetHttpSessionStateFromContext からHttpContext取得します。 このコード例は、SessionStateUtility クラスのために提供されている大規模な例の一部です。
//
// Event handler for HttpApplication.ReleaseRequestState
//
private void OnReleaseRequestState(object source, EventArgs args)
{
HttpApplication app = (HttpApplication)source;
HttpContext context = app.Context;
string sessionID;
// Read the session state from the context
HttpSessionStateContainer stateProvider =
(HttpSessionStateContainer)(SessionStateUtility.GetHttpSessionStateFromContext(context));
// If Session.Abandon() was called, remove the session data from the local Hashtable
// and execute the Session_OnEnd event from the Global.asax file.
if (stateProvider.IsAbandoned)
{
try
{
pHashtableLock.AcquireWriterLock(Int32.MaxValue);
sessionID = pSessionIDManager.GetSessionID(context);
pSessionItems.Remove(sessionID);
}
finally
{
pHashtableLock.ReleaseWriterLock();
}
SessionStateUtility.RaiseSessionEnd(stateProvider, this, EventArgs.Empty);
}
SessionStateUtility.RemoveHttpSessionStateFromContext(context);
}
'
' Event handler for HttpApplication.ReleaseRequestState
'
Private Sub OnReleaseRequestState(ByVal [source] As Object, ByVal args As EventArgs)
Dim app As HttpApplication = CType([source], HttpApplication)
Dim context As HttpContext = app.Context
Dim sessionID As String
' Read the session state from the context
Dim stateProvider As HttpSessionStateContainer = _
CType(SessionStateUtility.GetHttpSessionStateFromContext(context), HttpSessionStateContainer)
' If Session.Abandon() was called, remove the session data from the local Hashtable
' and execute the Session_OnEnd event from the Global.asax file.
If stateProvider.IsAbandoned Then
Try
pHashtableLock.AcquireWriterLock(Int32.MaxValue)
sessionID = pSessionIDManager.GetSessionID(context)
pSessionItems.Remove(sessionID)
Finally
pHashtableLock.ReleaseWriterLock()
End Try
SessionStateUtility.RaiseSessionEnd(stateProvider, Me, EventArgs.Empty)
End If
SessionStateUtility.RemoveHttpSessionStateFromContext(context)
End Sub
注釈
メソッドは GetHttpSessionStateFromContext 、セッション状態モジュールが現在の要求からセッション データを取得するために使用できます。 これは、要求の最後の ReleaseRequestState イベント中に発生します。 返されたセッション データは、セッション データ ストアに書き込むことができます。 セッションが破棄された場合は、セッション データをデータ ストア と HttpContextから削除し、 Session_OnEnd イベントを実行できます。
注意 (継承者)
メソッドを RemoveHttpSessionStateFromContext(HttpContext) 使用して内部ストアからセッション データを削除し、 メソッドを RaiseSessionEnd(IHttpSessionState, Object, EventArgs) 使用してイベントを Session_OnEnd
発生させることができます。
適用対象
.NET