次の方法で共有


SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) メソッド

定義

現在の要求のコンテキストからセッション データを取得します。

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 発生させることができます。

適用対象