Aracılığıyla paylaş


SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Yöntem

Tanım

Geçerli isteğin bağlamından oturum verilerini alır.

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

Parametreler

context
HttpContext

HttpContext Oturum verilerinin alındığı yer.

Döndürülenler

IHttpSessionState Geçerli istekten alınan oturum verileriyle doldurulmuş bir uygulama örneği.

Örnekler

Aşağıdaki kod örneği, özel bir oturum durumu modülünde olayın işleyicisini ReleaseRequestState gösterir. modül, yöntemini kullanarak GetHttpSessionStateFromContext geçerli istek için 'den HttpContext oturum verilerini alır. Bu kod örneği, sınıfı için SessionStateUtility sağlanan daha büyük bir örneğin parçasıdır.

//
// 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

Açıklamalar

yöntemi, GetHttpSessionStateFromContext geçerli istekten oturum verilerini almak için bir oturum durumu modülü tarafından kullanılabilir. Bu, isteğin ReleaseRequestState sonundaki olay sırasında oluşur. Döndürülen oturum verileri daha sonra oturum veri deposuna yazılabilir. Oturum bırakıldıysa, oturum verileri ve veri deposundan HttpContextkaldırılabilir ve Session_OnEnd olayı yürütülebilir.

Devralanlara Notlar

İç depodan oturum verilerini kaldırmak için yöntemini ve RaiseSessionEnd(IHttpSessionState, Object, EventArgs) olayı tetiklemek Session_OnEnd için yöntemini kullanabilirsinizRemoveHttpSessionStateFromContext(HttpContext).

Şunlara uygulanır