Udostępnij za pośrednictwem


SessionStateUtility.RaiseSessionEnd Metoda

Definicja

Wykonuje zdarzenie Session_OnEnd zdefiniowane w pliku Global.asax dla aplikacji 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

Wystąpienie IHttpSessionState implementacji dla sesji, która została zakończona.

eventSource
Object

Obiekt źródła zdarzeń, który ma być dostarczany do Session_OnEnd zdarzenia.

eventArgs
EventArgs

EventArgs Obiekt, który ma być dostarczany do Session_OnEnd zdarzenia.

Przykłady

Poniższy przykład kodu przedstawia procedurę obsługi zdarzenia ReleaseRequestState w niestandardowym module stanu sesji. Jeśli sesja została porzucona, moduł wykonuje zdarzenie Session_OnEnd zdefiniowane w pliku Global.asax dla aplikacji przy użyciu RaiseSessionEnd metody . Ten przykład kodu jest częścią większego przykładu podanego SessionStateUtility dla klasy.

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

Uwagi

Metoda RaiseSessionEnd jest używana przez moduł stanu sesji do wykonywania zdarzenia Session_OnEnd zdefiniowanego w pliku Global.asax dla aplikacji ASP.NET. Moduł stanu sesji wywoła metodę RaiseSessionEnd , gdy sesja została porzucona lub jeśli sesja wygaśnie.

Dotyczy