다음을 통해 공유


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 이벤트에 대 한 처리기를 보여 냅니다. 모듈은 메서드를 사용하여 현재 요청에 대한 에서 HttpContext 세션 데이터를 검색합니다 GetHttpSessionStateFromContext . 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 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 .

적용 대상