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 이벤트에 대 한 처리기를 보여 냅니다. 모듈은 메서드를 사용하여 현재 요청에 대한 에서 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
.
적용 대상
.NET