SessionStateUtility.RaiseSessionEnd Methode

Definition

Führt das in der Datei "Global.asax" für die ASP.NET-Anwendung definierte Session_OnEnd-Ereignis aus.

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)

Parameter

session
IHttpSessionState

Die Implementierungsinstanz IHttpSessionState für die Sitzung, die beendet wurde.

eventSource
Object

Das Ereignisquellobjekt, das für das Session_OnEnd Ereignis zur Verfügung stellt.

eventArgs
EventArgs

Das EventArgs Objekt, das für das Session_OnEnd Ereignis zurückgegeben werden soll.

Beispiele

Das folgende Codebeispiel zeigt den Handler für das ReleaseRequestState Ereignis in einem benutzerdefinierten Sitzungszustandsmodul. Wenn die Sitzung abgebrochen wurde, führt das Modul das Session_OnEnd Ereignis aus, das in der Datei "Global.asax" für die Anwendung mit der RaiseSessionEnd Methode definiert ist. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SessionStateUtility Klasse bereitgestellt wird.

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

Hinweise

Die RaiseSessionEnd-Methode wird von einem Sitzungszustandsmodul verwendet, um das in der Datei "Global.asax" für eine ASP.NET Anwendung definierte ereignis Session_OnEnd auszuführen. Ein Sitzungsstatusmodul ruft die RaiseSessionEnd Methode auf, wenn eine Sitzung abgebrochen wurde oder wenn die Sitzung abläuft.

Gilt für: