Compartir por


SessionStateStoreProviderBase Clase

Definición

Define los miembros necesarios de un proveedor de estado de sesión para un almacén de datos.

public ref class SessionStateStoreProviderBase abstract : System::Configuration::Provider::ProviderBase
public abstract class SessionStateStoreProviderBase : System.Configuration.Provider.ProviderBase
type SessionStateStoreProviderBase = class
    inherit ProviderBase
Public MustInherit Class SessionStateStoreProviderBase
Inherits ProviderBase
Herencia
SessionStateStoreProviderBase

Ejemplos

Para obtener un ejemplo de una implementación del proveedor de almacén de estado de sesión, consulte Implementación de un proveedor de almacén de Session-State.

En el ejemplo de código siguiente se muestra el archivo Web.config de una aplicación ASP.NET configurada para usar un proveedor de almacén de estado de sesión personalizado.

<configuration>
  <connectionStrings>
    <add name="OdbcSessionServices" connectionString="DSN=SessionState;" />
  </connectionStrings>

  <system.web>
    <sessionState
      mode="Custom"
      customProvider="OdbcSessionProvider">
      <providers>
        <add name="OdbcSessionProvider"
             type="Samples.AspNet.Session.OdbcSessionStateStore"
             connectionStringName="OdbcSessionServices" />
      </providers>
    </sessionState>
  </system.web>
</configuration>

Comentarios

ASP.NET estado de sesión lee y escribe datos de sesión desde y en un almacén de datos mediante un proveedor de almacén de estado de sesión. Un proveedor de almacén de estado de sesión es una clase que hereda la SessionStateStoreProviderBase clase abstracta e invalida sus miembros con implementaciones específicas del almacén de datos. La clase llama SessionStateModule al proveedor de almacén de estado de sesión durante el procesamiento de una página de ASP.NET para comunicarse con el almacén de datos para el almacenamiento y la recuperación de variables de sesión e información de sesión relacionada, como el valor de tiempo de espera.

Los datos de sesión de cada aplicación ASP.NET se almacenan por separado para cada SessionID propiedad. ASP.NET aplicaciones no comparten datos de sesión.

Puede especificar una implementación personalizada para una aplicación de ASP.NET estableciendo el mode atributo del elemento Custom de sessionState configuración en y el customProvider atributo en el nombre del proveedor personalizadoSessionStateStoreProviderBase, como se muestra en el ejemplo de este tema.

Bloquear datos del almacén de sesiones

Dado que ASP.NET aplicaciones son multiproceso para admitir la respuesta a solicitudes simultáneas, es posible que las solicitudes simultáneas intenten acceder a la misma información de sesión. Considere un escenario en el que varios fotogramas de un conjunto de marcos tienen acceso a la misma aplicación. Las solicitudes independientes de cada fotograma del conjunto de marcos se pueden ejecutar en el servidor web simultáneamente en subprocesos diferentes. Si las páginas de ASP.NET para cada variable de estado de sesión de acceso de origen de fotogramas, podría tener varios subprocesos que acceden al almacén de sesiones simultáneamente.

Para evitar colisiones de datos en el almacén de sesión y un comportamiento inesperado de estado de sesión, las SessionStateModule clases y SessionStateStoreProviderBase incluyen la funcionalidad de bloqueo que bloquea exclusivamente el elemento de almacén de sesión para una sesión determinada durante la ejecución de una página de ASP.NET. Tenga en cuenta que, incluso si el EnableSessionState atributo está marcado como ReadOnly, es posible que otras páginas de ASP.NET de la misma aplicación puedan escribir en el almacén de sesiones, por lo que una solicitud de datos de sesión de solo lectura del almacén podría terminar esperando que los datos bloqueados se liberen.

Se establece un bloqueo en los datos del almacén de sesión al principio de la solicitud, en la llamada al GetItemExclusive método . Cuando se completa la solicitud, el bloqueo se libera durante la llamada al SetAndReleaseItemExclusive método .

Si el SessionStateModule objeto encuentra datos de sesión bloqueados durante la llamada a o GetItemExclusive al GetItem método , volverá a solicitar los datos de sesión a intervalos de medio segundo hasta que se libere el bloqueo o la cantidad de tiempo que los datos de sesión se hayan bloqueado supera el valor de la ExecutionTimeout propiedad . Si se supera el tiempo de espera de ejecución, el SessionStateModule objeto llamará al ReleaseItemExclusive método para liberar los datos del almacén de sesión y solicitará los datos del almacén de sesión en ese momento.

Dado que los datos de almacén de sesión bloqueados podrían haber sido liberados por una llamada al ReleaseItemExclusive método en un subproceso independiente antes de la llamada al SetAndReleaseItemExclusive método para la respuesta actual, se podría intentar establecer y liberar los datos del almacén de estado de sesión que ya se han liberado y modificado por otra sesión. Para evitar esta situación, los GetItem métodos y GetItemExclusive devuelven un identificador de bloqueo. Este identificador de bloqueo debe incluirse con cada solicitud para modificar los datos de almacén de sesión bloqueados. Los datos del almacén de sesión solo se modifican si el identificador de bloqueo del almacén de datos coincide con el identificador de bloqueo proporcionado por .SessionStateModule

Eliminación de datos de almacén de sesiones expirados

Cuando se llama al Abandon método para una sesión determinada, los datos de esa sesión se eliminan del almacén de datos mediante el RemoveItem método ; de lo contrario, los datos permanecerán en el almacén de datos de sesión en las solicitudes futuras del servidor para la sesión. Es hasta la SessionStateStoreProviderBase implementación para eliminar los datos de sesión expirados.

Constructores

Nombre Description
SessionStateStoreProviderBase()

Inicializa una nueva instancia de la clase SessionStateStoreProviderBase.

Propiedades

Nombre Description
Description

Obtiene una breve descripción fácil de mostrar en herramientas administrativas u otras interfaces de usuario (UIs).

(Heredado de ProviderBase)
Name

Obtiene el nombre descriptivo que se usa para hacer referencia al proveedor durante la configuración.

(Heredado de ProviderBase)

Métodos

Nombre Description
CreateNewStoreData(HttpContext, Int32)

Crea un nuevo SessionStateStoreData objeto que se usará para la solicitud actual.

CreateUninitializedItem(HttpContext, String, Int32)

Agrega un nuevo elemento de estado de sesión al almacén de datos.

Dispose()

Libera todos los recursos usados por la SessionStateStoreProviderBase implementación.

EndRequest(HttpContext)

Llamado por el SessionStateModule objeto al final de una solicitud.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Devuelve datos de estado de sesión de solo lectura del almacén de datos de sesión.

GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Devuelve datos de estado de sesión de solo lectura del almacén de datos de sesión.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Initialize(String, NameValueCollection)

Inicializa el generador de configuración.

(Heredado de ProviderBase)
InitializeRequest(HttpContext)

Llamado por el objeto para la SessionStateModule inicialización por solicitud.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ReleaseItemExclusive(HttpContext, String, Object)

Libera un bloqueo en un elemento del almacén de datos de sesión.

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

Elimina los datos de elementos del almacén de datos de sesión.

ResetItemTimeout(HttpContext, String)

Actualiza la fecha y hora de expiración de un elemento en el almacén de datos de sesión.

SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean)

Actualiza la información del elemento de sesión en el almacén de datos de estado de sesión con valores de la solicitud actual y borra el bloqueo de los datos.

SetItemExpireCallback(SessionStateItemExpireCallback)

Establece una referencia al SessionStateItemExpireCallback delegado para el Session_OnEnd evento definido en el archivo Global.asax.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también