SessionStateUtility.AddHttpSessionStateToContext(HttpContext, IHttpSessionState) SessionStateUtility.AddHttpSessionStateToContext(HttpContext, IHttpSessionState) SessionStateUtility.AddHttpSessionStateToContext(HttpContext, IHttpSessionState) SessionStateUtility.AddHttpSessionStateToContext(HttpContext, IHttpSessionState) Method

Definition

Wendet die Sitzungsdaten auf den Kontext für die aktuelle Anforderung an.Applies the session data to the context for the current request.

public:
 static void AddHttpSessionStateToContext(System::Web::HttpContext ^ context, System::Web::SessionState::IHttpSessionState ^ container);
public static void AddHttpSessionStateToContext (System.Web.HttpContext context, System.Web.SessionState.IHttpSessionState container);
static member AddHttpSessionStateToContext : System.Web.HttpContext * System.Web.SessionState.IHttpSessionState -> unit
Public Shared Sub AddHttpSessionStateToContext (context As HttpContext, container As IHttpSessionState)

Parameter

context
HttpContext HttpContext HttpContext HttpContext

Das HttpContext-Objekt, dem das HttpSessionState-Objekt hinzugefügt werden soll.The HttpContext object to which to add the HttpSessionState object.

container
IHttpSessionState IHttpSessionState IHttpSessionState IHttpSessionState

Die Instanz der IHttpSessionState-Implementierung, die dem angegebenen HTTP-Kontext hinzugefügt werden soll.The IHttpSessionState implementation instance to add to the specified HTTP context.

Ausnahmen

Dem angegebenen context wurde bereits ein HttpSessionState-Objekt für die aktuelle Sitzung hinzugefügt.An HttpSessionState object for the current session has already been added to the specified context.

Beispiele

Das folgende Codebeispiel zeigt den Handler für das AcquireRequestState -Ereignis in einem benutzerdefinierten Sitzungs Zustands Modul.The following code example shows the handler for the AcquireRequestState event in a custom session-state module. Das benutzerdefinierte Modul ruft vorhandene Sitzungsinformationen ab oder erstellt neue Sitzungsinformationen und verwendet AddHttpSessionStateToContext die-Methode, um es HttpContext der aktuellen Anforderung hinzuzufügen.The custom module retrieves existing session information or creates new session information and uses the AddHttpSessionStateToContext method to add it to the HttpContext of the current request. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SessionStateUtility -Klasse bereitgestellt wird.This code example is part of a larger example provided for the SessionStateUtility class.

//
// Event handler for HttpApplication.AcquireRequestState
//

private void OnAcquireRequestState(object source, EventArgs args)
{
    HttpApplication app = (HttpApplication)source;
    HttpContext context = app.Context;
    bool isNew = false;
    string sessionID;
    SessionItem sessionData = null;
    bool supportSessionIDReissue = true;

    pSessionIDManager.InitializeRequest(context, false, out supportSessionIDReissue);
    sessionID = pSessionIDManager.GetSessionID(context);


    if (sessionID != null)
    {
        try
        {
            pHashtableLock.AcquireReaderLock(Int32.MaxValue);
            sessionData = (SessionItem)pSessionItems[sessionID];

            if (sessionData != null)
               sessionData.Expires = DateTime.Now.AddMinutes(pTimeout);
        }
        finally
        {
            pHashtableLock.ReleaseReaderLock();
        }
    }
    else
    {
        bool redirected, cookieAdded;

        sessionID = pSessionIDManager.CreateSessionID(context);
        pSessionIDManager.SaveSessionID(context, sessionID, out redirected, out cookieAdded);

        if (redirected)
            return;
    }

    if (sessionData == null)
    {
        // Identify the session as a new session state instance. Create a new SessionItem
        // and add it to the local Hashtable.

        isNew = true;

        sessionData = new SessionItem();

        sessionData.Items = new SessionStateItemCollection();
        sessionData.StaticObjects = SessionStateUtility.GetSessionStaticObjects(context);
        sessionData.Expires = DateTime.Now.AddMinutes(pTimeout);

        try
        {
            pHashtableLock.AcquireWriterLock(Int32.MaxValue);
            pSessionItems[sessionID] = sessionData;
        }
        finally
        {
            pHashtableLock.ReleaseWriterLock();
        }
    }

    // Add the session data to the current HttpContext.
    SessionStateUtility.AddHttpSessionStateToContext(context,
                     new HttpSessionStateContainer(sessionID,
                                                  sessionData.Items,
                                                  sessionData.StaticObjects,
                                                  pTimeout,
                                                  isNew,
                                                  pCookieMode,
                                                  SessionStateMode.Custom,
                                                  false));

    // Execute the Session_OnStart event for a new session.
    if (isNew && Start != null)
    {
        Start(this, EventArgs.Empty);
    }
}

//
// Event for Session_OnStart event in the Global.asax file.
//

public event EventHandler Start;
    '
    ' Event handler for HttpApplication.AcquireRequestState
    '
    Private Sub OnAcquireRequestState(ByVal [source] As Object, ByVal args As EventArgs)
        Dim app As HttpApplication = CType([source], HttpApplication)
        Dim context As HttpContext = app.Context
        Dim isNew As Boolean = False
        Dim sessionID As String
        Dim sessionData As SessionItem = Nothing
        Dim supportSessionIDReissue As Boolean = True

        pSessionIDManager.InitializeRequest(context, False, supportSessionIDReissue)
        sessionID = pSessionIDManager.GetSessionID(context)


        If Not (sessionID Is Nothing) Then
            Try
                pHashtableLock.AcquireReaderLock(Int32.MaxValue)
                sessionData = CType(pSessionItems(sessionID), SessionItem)

                If Not (sessionData Is Nothing) Then
                    sessionData.Expires = DateTime.Now.AddMinutes(pTimeout)
                End If
            Finally
                pHashtableLock.ReleaseReaderLock()
            End Try
        Else
            Dim redirected, cookieAdded As Boolean

            sessionID = pSessionIDManager.CreateSessionID(context)
            pSessionIDManager.SaveSessionID(context, sessionID, redirected, cookieAdded)

            If redirected Then Return
        End If
        If sessionData Is Nothing Then
            ' Identify the session as a new session state instance. Create a new SessionItem
            ' and add it to the local Hashtable.
            isNew = True

            sessionData = New SessionItem()

            sessionData.Items = New SessionStateItemCollection()
            sessionData.StaticObjects = SessionStateUtility.GetSessionStaticObjects(context)
            sessionData.Expires = DateTime.Now.AddMinutes(pTimeout)

            Try
                pHashtableLock.AcquireWriterLock(Int32.MaxValue)
                pSessionItems(sessionID) = sessionData
            Finally
                pHashtableLock.ReleaseWriterLock()
            End Try
        End If

        ' Add the session data to the current HttpContext.
        SessionStateUtility.AddHttpSessionStateToContext(context, _
                         New HttpSessionStateContainer(sessionID, _
                                                      sessionData.Items, _
                                                      sessionData.StaticObjects, _
                                                      pTimeout, _
                                                      isNew, _
                                                      pCookieMode, _
                                                      SessionStateMode.Custom, _
                                                      False))

        ' Execute the Session_OnStart event for a new session.
        If isNew Then RaiseEvent Start(Me, EventArgs.Empty)
    End Sub


    '
    ' Event for Session_OnStart event in the Global.asax file.
    '
Public Event Start As EventHandler

Hinweise

Die AddHttpSessionStateToContext -Methode wird von einem Sitzungs Zustands Modul verwendet, um Sitzungsdaten auf die aktuelle Anforderung anzuwenden.The AddHttpSessionStateToContext method is used by a session-state module to apply session data to the current request. Dieser Fehler tritt während AcquireRequestState des-Ereignisses am Anfang einer Anforderung auf.This occurs during the AcquireRequestState event at the beginning of a request. Sitzungsdaten für die aktuelle Anforderung werden entweder für eine vorhandene Sitzung abgerufen oder für eine neue Sitzung erstellt.Session data for the current request is either retrieved for an existing session or created for a new session. Die Sitzungsdaten werden dann in einer IHttpSessionState -Implementierungs Instanz gekapselt, die zusammen mit der aktuellen HttpContextan die AddHttpSessionStateToContext -Methode weitergegeben wird.The session data is then encapsulated in an IHttpSessionState implementation instance, which is passed to the AddHttpSessionStateToContext method along with the current HttpContext. Die angegebenen Sitzungsdaten werden dann dem Anwendungscode über die Session -Eigenschaft des aktuellen Kontexts zur Verfügung gestellt.The supplied session data is then made available to application code through the Session property of the current context.

Gilt für: