Compartir vía


HttpSessionStateContainer Constructor

Definición

Crea un nuevo objeto HttpSessionStateContainer y lo inicializa con la configuración y los valores especificados.

public:
 HttpSessionStateContainer(System::String ^ id, System::Web::SessionState::ISessionStateItemCollection ^ sessionItems, System::Web::HttpStaticObjectsCollection ^ staticObjects, int timeout, bool newSession, System::Web::HttpCookieMode cookieMode, System::Web::SessionState::SessionStateMode mode, bool isReadonly);
public HttpSessionStateContainer (string id, System.Web.SessionState.ISessionStateItemCollection sessionItems, System.Web.HttpStaticObjectsCollection staticObjects, int timeout, bool newSession, System.Web.HttpCookieMode cookieMode, System.Web.SessionState.SessionStateMode mode, bool isReadonly);
new System.Web.SessionState.HttpSessionStateContainer : string * System.Web.SessionState.ISessionStateItemCollection * System.Web.HttpStaticObjectsCollection * int * bool * System.Web.HttpCookieMode * System.Web.SessionState.SessionStateMode * bool -> System.Web.SessionState.HttpSessionStateContainer
Public Sub New (id As String, sessionItems As ISessionStateItemCollection, staticObjects As HttpStaticObjectsCollection, timeout As Integer, newSession As Boolean, cookieMode As HttpCookieMode, mode As SessionStateMode, isReadonly As Boolean)

Parámetros

id
String

Identificador de sesión para la nueva sesión. Si es null, se produce una excepción ArgumentException.

sessionItems
ISessionStateItemCollection

Interfaz ISessionStateItemCollection que contiene los valores de sesión para el nuevo proveedor del estado de la sesión.

staticObjects
HttpStaticObjectsCollection

Objeto HttpStaticObjectsCollection que especifica los objetos declarados mediante etiquetas <object Runat="Server" Scope="Session"/> en el archivo Global.asax de la aplicación ASP.NET.

timeout
Int32

Período de tiempo, en minutos, permitido entre solicitudes antes de que el proveedor del estado de la sesión termine la sesión.

newSession
Boolean

true para indicar si la sesión se creó con la solicitud actual; en caso contrario, false.

cookieMode
HttpCookieMode

Propiedad CookieMode del nuevo proveedor del estado de la sesión.

mode
SessionStateMode

Uno de los valores de SessionStateMode que especifica el modo de estado de sesión actual.

isReadonly
Boolean

true para indicar que la sesión es de sólo lectura; en caso contrario, false.

Excepciones

id es null.

Ejemplos

En el ejemplo de código siguiente se muestra el AcquireRequestState controlador de eventos para un módulo de estado de sesión personalizado que rellena un nuevo objeto con información de sesión nueva HttpSessionStateContainer o existente y lo agrega a la HttpContext de la solicitud actual mediante el AddHttpSessionStateToContext método . Para obtener un ejemplo de código completo de un módulo de estado de sesión personalizado, consulte la información general de la SessionStateUtility clase.

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

Se aplica a

Consulte también