Elemento sessionState (Esquema de configuración de ASP.NET)

[Esta documentación se proporciona solo para fines preliminares y está sujeta a cambios en versiones posteriores. Se incluye temas en blanco como marcadores].

Configura las opciones de estado de la sesión para la aplicación actual.

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sessionIDManagerType="session manager type"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name"
    compressionEnabled="[True|False]"
    sqlConnectionRetryInterval="number of seconds">
    <providers>...</providers>
</sessionState>

Atributos y elementos

En las próximas secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo

Descripción

allowCustomSqlDatabase

Atributo Boolean opcional.

Especifica si la base de datos SQL de estados de sesión puede ser una base de datos personalizada en lugar de la base de datos predeterminada de ASP.NET. Si su valor es false, no se puede especificar un catálogo inicial ni una base de datos como valor del atributo sqlConnectionString. La base de datos SQL predeterminada de estados de sesión es la base de datos ASPState. Para obtener más información, vea Session State Modes.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

El valor predeterminado es false.

compressionEnabled

Atributo Boolean opcional.

Especifica si la compresión se aplica a los datos del estado de sesión.

El valor predeterminado es false.

cookieless

Atributo HttpCookieMode opcional.

Especifica cómo se utilizan las cookies en una aplicación Web.

El atributo cookieless puede ser uno de los siguientes valores posibles: El valor predeterminado es UseCookies.

NoteNote
Cuando configure un sitio web de ASP.NET habilitado para AJAX, sólo debe usar el valor predeterminado de UseCookies para el atributo cookieless.Las bibliotecas de script de cliente AJAX de ASP.NET no admiten la configuración en la que se utilizan cookies codificadas en la dirección URL.
ValorDescripción
AutoDetect ASP.NET determina si el explorador o dispositivo que realizó la solicitud admite cookies.Si el explorador admite cookies, AutoDetect las utilizará para conservar los datos del usuario; en caso contrario, se utilizará un identificador en la cadena de consulta.Si el explorador admite el uso de cookies pero éstas están deshabilitadas, la característica que realiza la solicitud seguirá utilizándolas.
UseCookies Las cookies conservan los datos del usuario sin tener en cuenta si el explorador o el dispositivo las admite.
UseDeviceProfile ASP.NET determina si se pueden utilizar cookies en función del valor de HttpBrowserCapabilities.Si el valor de HttpBrowserCapabilities indica que el explorador o el dispositivo admite cookies, se utilizan cookies; de lo contrario, se utiliza un identificador en la cadena de consulta.
UseUri La característica que realiza la llamada utiliza la cadena de consulta para almacenar un identificador sin tener en cuenta si el explorador o el dispositivo admite cookies.

cookieName

Atributo String opcional.

Especifica el nombre de la cookie que almacena el identificador de sesión.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

El valor predeterminado es "ASP.NET_SessionId".

customProvider

Atributo String opcional.

Especifica el nombre de un proveedor de estados de sesión personalizado que se usará para almacenar y recuperar los datos del estado de la sesión. El proveedor se especifica en el elemento providers. Sólo se utiliza el proveedor cuando el modo del estado de la sesión está establecido en el valor Custom. Para obtener más información, vea Session State Modes.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

El valor predeterminado es una cadena vacía ("").

mode

Atributo SessionStateMode opcional.

Especifica dónde se almacenan los valores del estado de la sesión. Para obtener más información, vea Session State Modes.

El atributo mode puede ser uno de los siguientes valores posibles: El valor predeterminado es InProc.

ValorDescripción
Custom El estado de la sesión está utilizando un almacén de datos personalizado para almacenar la información del estado de sesión.
InProc El estado de sesión está en proceso con un proceso de trabajo de ASP.NET.
Off El estado de la sesión está deshabilitado.
SQLServer El estado de la sesión está utilizando una base de datos de servidor de SQL Server fuera de proceso para almacenar la información sobre el estado.
StateServer El estado de la sesión utiliza el servicio de estado de ASP.NET fuera de proceso para almacenar la información de estado.

partitionResolverType

Atributo String opcional.

Especifica dónde se almacena el estado de la sesión. Si se especifica un valor en el atributo partitionResolverType, se omiten los atributos sqlConnectionString y stateConnectionString. La cadena de conexión devuelta por la propiedad PartitionResolverType se utiliza en cada solicitud con el fin de conectar con la ubicación del servidor adecuado para el resto de la solicitud. Si la cadena de conexión no es válida, ASP.NET inicia la misma excepción que cuando la cadena de conexión configurada para el servidor tampoco es válida. Esta propiedad se utiliza para dividir los datos de estado de la sesión en varios nodos back-end cuando se encuentra en modo de servidor de estado o SQL.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

El valor predeterminado es una cadena vacía.

regenerateExpiredSessionId

Atributo Boolean opcional.

Especifica si se volverá a emitir el identificador de sesión cuando el cliente especifica un identificador de sesión que ha expirado. De manera predeterminada, los identificadores de sesión vuelven a emitirse únicamente para el modo cookieless cuando está habilitado regenerateExpiredSessionId. Para obtener más información, vea IsCookieless.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

De manera predeterminada, es true.

sessionIDManagerType

Atributo String opcional.

Especifica el tipo completo del administrador de id. de sesión. El valor predeterminado es una cadena vacía.

sqlCommandTimeout

Atributo TimeSpan opcional.

Especifica, en segundos, el tiempo de espera para los comandos SQL que utilizan el modo de estado de sesión de SQL Server. El tiempo de espera es el número de segundos durante los cuales un comando SQL puede estar inactivo antes de que quede cancelado.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

El valor predeterminado es 0:00:30 (30 segundos).

sqlConnectionRetryInterval

Atributo TimeSpan opcional.

Especifica el intervalo de tiempo, en segundos, entre los intentos para conectarse a la base de datos.

El valor predeterminado es 0 segundos.

sqlConnectionString

Atributo String opcional.

Especifica la cadena de conexión para un equipo donde se ejecuta SQL Server. Este atributo es necesario cuando el valor del atributo mode está establecido en SQLServer. Para obtener más información, vea Session State Modes.

Puede establecer este atributo en una sqlConnectionString con nombre del nodo connectionStrings o puede utilizar la sintaxis siguiente:

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
NoteNote
Para mejorar la seguridad de la aplicación al utilizar el modo SQLServer, utilice una configuración protegida para ayudar a proteger el valor sqlConnectionString cifrando la sección sessionState de la configuración.

El valor predeterminado es "data source=127.0.0.1;Integrated Security=SSPI".

stateConnectionString

Atributo String opcional.

Especifica el nombre del servidor o la dirección y el puerto donde se almacena el estado de la sesión de forma remota. El valor del puerto debe ser 42424. Este atributo es imprescindible cuando el valor de mode es StateServer. Hay que asegurarse de que el servicio de estado de ASP.NET se está ejecutando en el servidor remoto donde se almacena la información de estado de la sesión. Este servicio se instala con ASP.NET y se encuentra, de manera predeterminada, en %windir%\Microsoft.NET\Framework\NúmeroVersión\aspnet_state.exe. Para obtener más información, vea Session State Modes.

NoteNote
Para mejorar la seguridad de la aplicación al utilizar el modo StateServer, utilice una configuración protegida para ayudar a proteger el valor stateConnectionString cifrando la sección sessionState de la configuración.

El valor predeterminado es "tcpip=127.0.0.1:42424".

stateNetworkTimeout

Atributo TimeSpan opcional.

Especifica el número de segundos durante los cuales puede estar inactiva la conexión de red TCP/IP entre el servidor Web y el servidor de estado antes de que se cancele la solicitud. Se utiliza este atributo cuando el valor del atributo mode está establecido en StateServer.

El valor predeterminado es 10 segundos.

timeout

Atributo TimeSpan opcional.

Especifica el número de minutos que una sesión puede estar inactiva antes de que se abandone. El atributo timeout no se puede establecer en un valor mayor que 525,600 minutos (1 año) para los modos en proceso y servidor de estado.

La opción de configuración timeout de la sesión sólo se aplica a las páginas ASP.NET. Cambiar el valor de timeout de la sesión no afecta al tiempo de espera de la sesión para las páginas ASP. De manera similar, cambiar el tiempo de espera de la sesión para las páginas ASP no afecta al tiempo de espera de la sesión para las páginas ASP.NET.

El valor predeterminado es 20 minutos.

useHostingIdentity

Atributo Boolean opcional.

Especifica si el estado de la sesión volverá a la identidad de host o usará la suplantación del cliente.

Si su valor es true, ASP.NET se conecta al almacén de estados de sesión utilizando una de las siguientes credenciales de proceso:

  • El proceso de hospedaje, que es ASPNET para Microsoft Internet Information Services (IIS) 5 y 5.1 o NETWORK SERVICE para Microsoft Windows Server 2003.

  • La identidad de suplantación de la aplicación, siendo éste el caso cuando se utiliza la siguiente configuración:

    <identity impersonate="true" userName="dominio\nombre_usuario" password="contraseña segura" />

Si su valor es false, ASP.NET se conecta al almacén de estados de sesión utilizando las credenciales actualmente asociadas al subproceso del sistema operativo para la actual solicitud. Para la suplantación del cliente, ASP.NET se conectará al almacén de estados de sesión utilizando las credenciales de seguridad negociadas con el explorador. Si su valor es false, ASP.NET no recuperará la identidad de proceso o la identidad de suplantación de la aplicación al conectarse al almacén de estados de sesión. Para obtener más información, vea ASP.NET Impersonation.

Este atributo es nuevo en la versión 2.0 de .NET Framework.

De manera predeterminada, es true.

NoteNote
En .NET Framework 1.1, si el valor del atributo mode era SQLServer y se utilizaba la suplantación del cliente, ASP.NET se conectaba al equipo donde se ejecutaba SQL Server mediante las credenciales de cliente de la suplantación de cliente de ASP.NET.

Atributos heredados

Atributos opcionales.

Atributos heredados por todos los elementos de una sección.

Elementos secundarios

Elemento

Descripción

providers

Contiene una colección de proveedores de almacenes de estados de sesión personalizados.

Elementos primarios

Elemento

Descripción

configuration

Es el elemento raíz necesario de cada archivo de configuración que utilizan Common Language Runtime y las aplicaciones basadas en .NET Framework.

system.web

Especifica el elemento raíz de los valores de configuración de ASP.NET de un archivo de configuración y contiene elementos que configuran las aplicaciones Web ASP.NET y controlan el comportamiento de las aplicaciones.

Comentarios

El elemento <sessionState> configura las opciones de estado de la sesión para la aplicación actual.

Cuando un cliente nuevo empieza a interactuar con una aplicación Web, se emite un identificador de sesión que se asocia a todas las solicitudes subsiguientes del mismo cliente durante el tiempo de validez de la sesión. Este identificador se utiliza para mantener el estado del servidor asociado a la sesión del cliente en las solicitudes. El elemento <sessionState> controla cómo la aplicación ASP.NET establece y mantiene esta asociación para cada cliente.

Este mecanismo es muy flexible y permite hospedar la información de estado de la sesión fuera de proceso y realizar un seguimiento del estado sin utilizar cookies, entre otras opciones.

Se puede superar el tamaño máximo del identificador URI cuando se envía el identificador de sesión en el identificador URI. Si la combinación del vale de identificación anónimo, el vale de autenticación de los formularios, el identificador de sesión y los datos de usuario es mayor que la longitud máxima permitida del identificador URI, se generará el error 400 de solicitud incorrecta.

Para utilizar el modo StateServer

  1. Hay que asegurarse de que el servicio de estado de ASP.NET se está ejecutando en el servidor remoto donde se va a almacenar la información de estado de la sesión.

    El servicio de estado de ASP.NET se instala con ASP.NET y se encuentra de manera predeterminada en %dirWin%\Microsoft.NET\Framework\versión\aspnet_state.exe.

  2. En el archivo Web.config de la aplicación, establezca el valor de mode en "StateServer" y el valor de stateConnectionString en, por ejemplo, "tcpip=dataserver:42424".

Para utilizar el modo SQLServer

  1. Ejecute InstallSqlState.sql en el equipo con SQL Server donde se va a almacenar el estado de la sesión.

    De manera predeterminada, InstallSqlState.sql se encuentra en %dirWin%\Microsoft.NET\Framework\versión.

    De este modo, se crea una base de datos denominada ASPState con nuevos procedimientos almacenados y tablas denominadas ASPStateTempApplications y ASPStateTempSessions en la base de datos TempDB.

  2. En el archivo Web.config de la aplicación, establezca el valor de mode en "SQLServer" y el valor de sqlConnectionString en, por ejemplo, "data source=localhost;Integrated Security=SSPI;".

    Nota

    Se puede usar Aspnet_regsql.exe para llevar a cabo estos pasos.

Para obtener información sobre cómo obtener acceso a los valores de configuración del elemento <sessionState> en el código de una aplicación, o sobre cómo modificarlos, vea SessionStateSection y System.Web.SessionState.

Configuración predeterminada

El siguiente elemento <sessionState> predeterminado no se configura explícitamente en el archivo Machine.config o en el archivo Web.config raíz. Sin embargo, es la configuración predeterminada que devuelve la aplicación.

<sessionState 
   mode="InProc" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   stateNetworkTimeout="10" 
   sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" 
   sqlCommandTimeout="30" 
   customProvider="" 
   cookieless="UseCookies" 
   cookieName="ASP.NET_SessionId" 
   timeout="20" 
   allowCustomSqlDatabase="false" 
   regenerateExpiredSessionId="true" 
   partitionResolverType="" 
   useHostingIdentity="true">
   <providers>
      <clear />
   </providers>
</sessionState>

Ejemplo

En el ejemplo siguiente se muestra cómo especificar opciones de configuración de estado de sesión.

<sessionState
   mode="SQLServer"
   cookieless="true"
   sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
   sqlCommandTimeout="10" />

Información de elemento

Controlador de la sección de configuración

SessionStateSection

Miembro de configuración

System.Web.SessionState

Ubicaciones configurables

Machine.config

Web.config del nivel raíz

Web.config del nivel de aplicaciones

Requisitos

Microsoft Internet Information Services 5.0, 5.1 ó 6.0

.NET Framework 1.0, 1.1 ó 2.0

Microsoft Visual Studio 2003 o Visual Studio 2005

Vea también

Tareas

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

Referencia

Elemento system.web (Esquema de configuración de ASP.NET)

Elemento providers para sessionState (Esquema de configuración de ASP.NET)

Elemento configuration (Esquema de configuración general)

System.Configuration

System.Web.Configuration

SessionStateSection

System.Web.SessionState

Conceptos

ASP.NET Impersonation

Session State Modes

Securing Session State

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

Otros recursos

Protected Configuration

Opciones de configuración generales (ASP.NET)

Opciones de configuración de ASP.NET

Configuring ASP.NET Applications

ASP.NET Configuration API