Sdílet prostřednictvím


SessionStateUtility.RaiseSessionEnd Metoda

Definice

Spustí událost Session_OnEnd definovanou v souboru Global.asax pro aplikaci ASP.NET.

public:
 static void RaiseSessionEnd(System::Web::SessionState::IHttpSessionState ^ session, System::Object ^ eventSource, EventArgs ^ eventArgs);
public static void RaiseSessionEnd (System.Web.SessionState.IHttpSessionState session, object eventSource, EventArgs eventArgs);
static member RaiseSessionEnd : System.Web.SessionState.IHttpSessionState * obj * EventArgs -> unit
Public Shared Sub RaiseSessionEnd (session As IHttpSessionState, eventSource As Object, eventArgs As EventArgs)

Parametry

session
IHttpSessionState

Instance IHttpSessionState implementace pro relaci, která skončila.

eventSource
Object

Objekt zdroje události, který se má události poskytnout Session_OnEnd .

eventArgs
EventArgs

Objekt EventArgs , který Session_OnEnd se má události poskytnout.

Příklady

Následující příklad kódu ukazuje obslužnou rutinu ReleaseRequestState pro událost ve vlastním modulu stavu relace. Pokud byla relace zrušena, modul spustí událost Session_OnEnd definovanou v souboru Global.asax pro aplikaci pomocí RaiseSessionEnd metody . Tento příklad kódu je součástí většího příkladu SessionStateUtility pro třídu .

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

Poznámky

Metodu RaiseSessionEnd používá modul stavu relace ke spuštění Session_OnEnd události definované v souboru Global.asax pro ASP.NET aplikaci. Modul stavu relace zavolá metodu , RaiseSessionEnd když byla relace zrušena nebo pokud relace vyprší.

Platí pro