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 implementación de un proveedor de almacenes de Estados de sesión, vea implementar un proveedor de almacenamiento de Session-State.

En el ejemplo de código siguiente se muestra el archivo de Web.config para una aplicación ASP.NET que está configurada para usar un proveedor de almacén de Estados 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

El estado de sesión ASP.NET Lee y escribe datos de sesión de y en un almacén de datos mediante un proveedor de almacenes de Estados de sesión. Un proveedor de almacenes de Estados 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 al proveedor de almacén SessionStateModule de Estados de sesión durante el procesamiento de una página ASP.net para comunicarse con el almacén de datos para el almacenamiento y la recuperación de las variables de sesión y la información de la sesión relacionada, como el valor de tiempo de espera.

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

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

Bloqueo de datos del almacén de sesión

Dado que las aplicaciones de ASP.NET están multiproceso para admitir la respuesta a las solicitudes simultáneas, es posible que las solicitudes simultáneas intenten tener acceso a la misma información de sesión. Considere un escenario en el que varios marcos de un FRAMESET tienen acceso a la misma aplicación. Las solicitudes independientes para cada marco en el frameset se pueden ejecutar en el servidor Web simultáneamente en diferentes subprocesos. Si las páginas de ASP.NET para cada marco tienen acceso de origen a las variables de estado de sesión, puede tener varios subprocesos que tengan acceso al almacén de sesión simultáneamente.

Para evitar colisiones de datos en el almacén de sesión y un comportamiento de estado de sesión inesperado, las SessionStateModule SessionStateStoreProviderBase clases y incluyen la funcionalidad de bloqueo que bloquea exclusivamente el elemento de almacén de sesión para una sesión determinada mientras dure la ejecución de una página ASP.net. Tenga en cuenta que aunque 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 sesión, por lo que una solicitud de datos de sesión de solo lectura desde el almacén podría seguir esperando a que se liberen los datos bloqueados.

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 al GetItemExclusive método o, volverá GetItem a solicitar los datos de la sesión en intervalos de medio segundo hasta que se libere el bloqueo o hasta que la cantidad de tiempo que los datos de la sesión se hayan bloqueado supere 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 es posible que los datos del almacén de sesiones bloqueados se hayan liberado mediante 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 realizar un intento para establecer y liberar datos del almacén de Estados de sesión que ya ha sido liberado y modificado por otra sesión. Para evitar esta situación, los GetItem GetItemExclusive métodos y devuelven un identificador de bloqueo. Este identificador de bloqueo debe incluirse en cada solicitud para modificar los datos bloqueados del almacén de sesiones. 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 .

Eliminando datos de almacén de sesión expirados

Cuando Abandon se llama al 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; en caso contrario, los datos permanecen en el almacén de datos de la sesión para las solicitudes futuras de la sesión. Depende de la SessionStateStoreProviderBase implementación que elimine los datos de la Sesión expirada.

Constructores

SessionStateStoreProviderBase()

Inicializa una nueva instancia de la clase SessionStateStoreProviderBase.

Propiedades

Description

Obtiene una descripción breve y fácil de comprender apropiada para mostrarla en las herramientas administrativas u otras interfaces de usuario.

(Heredado de ProviderBase)
Name

Obtiene el nombre descriptivo utilizado para hacer referencia al proveedor durante la configuración.

(Heredado de ProviderBase)

Métodos

CreateNewStoreData(HttpContext, Int32)

Crea un nuevo objeto SessionStateStoreData que se va a utilizar 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 utilizados por la implementación de SessionStateStoreProviderBase.

EndRequest(HttpContext)

El objeto SessionStateModule llama a este método al final de una solicitud.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

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

Devuelve datos del estado de sesión de sólo lectura desde el almacén de datos de la sesión.

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

Devuelve datos del estado de sesión de sólo lectura desde el almacén de datos de la 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)

El objeto SessionStateModule llama a este método para llevar a cabo la inicialización por solicitud.

MemberwiseClone()

Crea una copia superficial del Object actual.

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

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

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

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

ResetItemTimeout(HttpContext, String)

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

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

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

SetItemExpireCallback(SessionStateItemExpireCallback)

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

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también