SessionStateStoreProviderBase Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 para una aplicación de ASP.NET que está 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 de 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 las aplicaciones 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 Custom de sessionState
configuración en y el customProvider
atributo en el nombre del proveedor personalizado, 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 simultáneamente en el servidor web en subprocesos diferentes. Si las páginas 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 del 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 mientras dure 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 es posible que una solicitud de datos de sesión de solo lectura del almacén siga esperando 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 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 es posible que una llamada al ReleaseItemExclusive método haya liberado los datos de almacén de sesión bloqueados 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 ha sido 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 sesión 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 de la sesión. Es hasta la implementación para SessionStateStoreProviderBase eliminar los datos de sesión expirados.
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 |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |