Condividi tramite


SessionStateUtility.RaiseSessionEnd Metodo

Definizione

Esegue l'evento Session_OnEnd definito nel file Global.asax per l'applicazione 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)

Parametri

session
IHttpSessionState

Istanza dell'implementazione IHttpSessionState per la sessione terminata.

eventSource
Object

Oggetto di origine dell'evento da fornire all'evento Session_OnEnd.

eventArgs
EventArgs

Oggetto EventArgs da fornire all'evento Session_OnEnd.

Esempio

Nell'esempio di codice seguente viene illustrato il gestore dell'evento ReleaseRequestState in un modulo di stato sessione personalizzato. Se la sessione è stata abbandonata, il modulo esegue l'evento Session_OnEnd definito nel file Global.asax per l'applicazione usando il RaiseSessionEnd metodo . Questo esempio di codice fa parte di un esempio più grande fornito per la SessionStateUtility classe.

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

Commenti

Il RaiseSessionEnd metodo viene usato da un modulo di stato sessione per eseguire l'evento Session_OnEnd definito nel file Global.asax per un'applicazione ASP.NET . Un modulo di stato sessione chiamerà il RaiseSessionEnd metodo quando una sessione è stata abbandonata o se la sessione scade.

Si applica a