Share via


SessionStateUtility.RaiseSessionEnd Metode

Definisi

Menjalankan peristiwa Session_OnEnd yang ditentukan dalam file Global.asax untuk aplikasi 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)

Parameter

session
IHttpSessionState

Instans IHttpSessionState implementasi untuk sesi yang telah berakhir.

eventSource
Object

Objek sumber kejadian untuk disuplai ke Session_OnEnd peristiwa.

eventArgs
EventArgs

Objek EventArgs yang akan disuplai ke Session_OnEnd peristiwa.

Contoh

Contoh kode berikut menunjukkan handler untuk ReleaseRequestState peristiwa dalam modul keadaan sesi kustom. Jika sesi telah ditinggalkan, modul menjalankan peristiwa Session_OnEnd yang ditentukan dalam file Global.asax untuk aplikasi menggunakan RaiseSessionEnd metode . Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk SessionStateUtility kelas .

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

Keterangan

Metode RaiseSessionEnd ini digunakan oleh modul keadaan sesi untuk menjalankan peristiwa Session_OnEnd yang ditentukan dalam file Global.asax untuk aplikasi ASP.NET. Modul keadaan sesi akan memanggil RaiseSessionEnd metode ketika sesi telah ditinggalkan, atau jika sesi kedaluwarsa.

Berlaku untuk