Compartir a través de


Planificación del paso 2: planear la configuración de ASP.NET

por Keith Newman y Robert McMurray

2.1. Configuración del estado de la sesión

Cuando los clientes visitan un sitio, suelen navegar de una página a otra y cambian con frecuencia algunas de las páginas que visitan. Si quieres realizar un seguimiento de las páginas que los usuarios visitan y de los cambios que realizan durante cada visita a tu sitio web, deberás configurar el estado de sesión.

Cuando el estado de sesión está habilitado para la aplicación, el usuario recibe un identificador de sesión único en su primera solicitud a una página web de la aplicación ASP.NET. Los datos de estado de sesión se almacenan en el servidor de una de estas formas:

  • Dentro del proceso: el estado de la sesión se almacena en el proceso de trabajo donde se ejecuta la aplicación ASP.NET.
  • Estado del servidor: el estado de la sesión se almacena fuera del proceso de trabajo donde se ejecuta la aplicación ASP.NET.
  • SQL Server: el estado de sesión se almacena en una base de datos de SQL Server.

Nota:

También puedes configurar el almacenamiento personalizado fuera del estado para los datos de estado de sesión. Sin embargo, este escenario queda fuera del alcance de este tutorial. Los proyectos de Visual Studio 11 usan el almacenamiento personalizado para proporcionar compatibilidad con SQL Server, SQL Compact y SQL Azure.

Los datos de estado de la sesión también pueden almacenarse en una cookie en el cliente. Una cookie es un archivo de texto que contiene datos que se usan para almacenar información sobre el usuario, como las preferencias de usuario e información sobre la autenticación de usuario.

En las siguientes secciones se describen con mayor detalle las opciones de almacenamiento del estado de la sesión.

Almacenar el estado de la sesión en proceso

El modo de estado de sesión dentro del proceso almacena los datos del estado de la sesión de una aplicación ASP.NET en el proceso de trabajo donde se ejecuta la aplicación. Este modo es el valor predeterminado para IIS 8.

La ventaja de usar el estado de sesión en proceso es que proporciona el acceso más rápido a los datos de estado de sesión. Sin embargo, a medida que almacena más datos en una sesión, consume más memoria, por lo que se puede ralentizar el rendimiento del servidor.

Antes de configurar el estado de sesión en proceso, considera qué efecto tiene el reciclaje del proceso de trabajo sobre los datos del estado de sesión. Si se recicla el proceso de trabajo, se pierden todos los datos del estado de sesión. Si las aplicaciones ASP.NET necesitan conservar los datos del estado de sesión y si la velocidad de acceso a los datos no es su objetivo principal, considera el uso del modo de estado de sesión fuera de proceso para almacenar estos datos.

Importante

Para que el estado de sesión en proceso surta efecto, es preciso que se ejecute el servicio de estado de Windows (Aspnet_state.exe). De forma predeterminada, este servicio se instala cuando se instala Windows Server® 2012 y se configura para el inicio manual. Te recomendamos que cambies el comportamiento de inicio a Automático.

De forma predeterminada, la sesión expira cuando, en un plazo de 20 minutos, el usuario no solicita o no actualiza una página de la aplicación ASP.NET. Como los objetos de sesión consumen memoria en el servidor web, considera la posibilidad de disminuir el valor de tiempo de espera para conservar los recursos.

Importante: ten cuidado cuando ajustes el valor del tiempo de espera de la sesión, porque la información almacenada en el objeto de sesión del usuario se perderá cuando el usuario no esté activo en el sitio web durante el período especificado como tiempo de espera.

Si decides usar el almacenamiento de estado de sesión en proceso, tendrás que decidir también si deseas emplear cookies. Para obtener más información sobre las cookies, consulta Modo cookie para el estado de sesión.

Almacenar el estado de la sesión mediante un servidor de estado

Un servidor de estado mantiene la fecha de estado de la sesión en la memoria, fuera del proceso de trabajo. La ventaja de esta configuración es que ese estado de sesión se conserva cuando se recicla el proceso de trabajo de la aplicación. Recomendamos usar un servidor de estado para las aplicaciones de tamaño mediano.

Un servidor de estado depende del servicio de estado de Windows (Aspnet_state.exe) y requiere una clave de equipo para comprobar el estado de la sesión en toda la conexión.

Cuando un servidor de estado se ejecuta en el mismo servidor web que el que contiene las aplicaciones para las que mantiene el estado, se permite usar una configuración de jardín de servidores web. Para mejorar la protección de los datos del estado de sesión, considera la posibilidad de usar una configuración de granja de servidores web con un servidor independiente que almacene el estado de sesión y lo comparta con todos los servidores de la granja. Otro enfoque es usar SQL Server para mantener el estado de sesión fuera de proceso.

Importante: para que el estado de sesión en proceso surta efecto, es preciso que se ejecute el servicio de estado de Windows (Aspnet_state.exe). De forma predeterminada, este servicio se instala cuando se instala Windows Server 2012 y se configura para el inicio manual. Cambia el comportamiento de inicio a Automático.

Si decides almacenar el estado de la sesión mediante un servidor de estado, tendrás que tomar las siguientes decisiones de diseño:

  • Definir una cadena de conexión para el servidor de estado.
  • Especificar el número de segundos que deben transcurrir antes de que se agote el tiempo de espera de la conexión.
  • Decidir si habilitar la compresión.
  • Decidir si a almacenar los datos del estado de sesión en una cookie. Para obtener más información sobre las cookies, consulta Modo cookie para el estado de sesión.

Almacenar el estado de la sesión mediante SQL Server

Un tipo de estado de sesión fuera de proceso usa un servidor SQL Server para almacenar los datos del estado de sesión. Esta configuración ofrece como ventaja que el estado de la sesión se conserva cuando el proceso de trabajo de la aplicación se recicla, o bien, si el servicio de estado de Windows o el servidor web deja de funcionar.

Nota:

Esta configuración no admite SQL Azure.

Cuando un servidor SQL Server se ejecuta en el mismo servidor web que tiene las aplicaciones para las que mantiene el estado, se permite usar una configuración de jardín de servidores web, lo que aumenta la escalabilidad del servidor web. Cuando el servidor SQL Server se ejecuta en otro servidor, admite una configuración de granja de servidores web, lo que aumenta en gran medida la escalabilidad en todo un grupo de servidores.

Importante

Para que el estado de la sesión fuera de proceso surta efecto, se debe ejecutar el servicio de estado de Windows (Aspnet_state.exe). De forma predeterminada, este servicio se instala cuando se instala Windows Server 2012 y se configura para el inicio manual. Cambia el comportamiento de inicio a Automático.

Importante

Antes de configurar un servidor SQL Server para el estado de sesión, ejecuta el script InstallSqlState.sql en el servidor. De forma predeterminada, este script se almacena en %systemroot%\Microsoft.NET\Framework\V4.0.30319.

Si decides almacenar el estado de la sesión en una base de datos de SQL Server, tendrás que tomar las siguientes decisiones de diseño:

  • Definir una cadena de conexión para la base de datos.
  • Especificar el número de segundos que deben transcurrir antes de que se agote el tiempo de espera de la conexión.
  • Especificar el número de segundos que deben transcurrir antes de intentar la reconexión.
  • Decidir si se va a habilitar una base de datos personalizada.
  • Decidir si habilitar la compresión.
  • Decidir si a almacenar los datos del estado de sesión en una cookie. Para obtener más información sobre las cookies, consulta Modo cookie para el estado de sesión.

Una forma de realizar un seguimiento del estado de sesión de los clientes que se conectan a un servidor web es usar cookies. Puedes configurar un servidor web de forma que use o no use cookies, o de modo que seleccione el comportamiento de las cookies en función del explorador usado para la conexión.

Una cookie de sesión asocia la información de la sesión a la información del cliente durante la sesión. Una sesión es la duración de la conexión de un usuario a un sitio. Las cookies se transfieren junto con todas las solicitudes entre un cliente y un servidor web en un encabezado HTTP.

El uso de cookies para realizar un seguimiento del estado de sesión es más eficaz que cualquier otro método que no usa cookies, porque las cookies no necesitan redireccionamiento. Además, permiten a los usuarios marcar como favoritas las páginas web y conservan el estado si un usuario deja un sitio para visitar otro y después vuelve al sitio original. El único inconveniente de las cookies de usuario es que los usuarios pueden deshabilitar las cookies en su explorador.

El modo cookie Usar perfil del dispositivo hace que el explorador use cookies si el explorador las admite; de lo contrario, no se usarán. Si el perfil del dispositivo indica la admisión de cookies, estas se usarán con independencia de que el usuario tenga deshabilitada la compatibilidad con cookies.

Importante

Cuando uses el modo Usar perfil del dispositivo con cookies, establece que se regeneren los identificadores de sesión expirada. De este modo, se permite que un servidor web expire y regenere tokens, por lo que un posible atacante dispone de menos tiempo para capturar una cookie y obtener acceso al contenido del servidor web.

El modo cookie Detección automática hace que se usen cookies si el perfil del dispositivo móvil las admite; de lo contrario, no se usarán. En exploradores de escritorio que admiten cookies, ASP.NET intenta usarlas cuando la compatibilidad con cookies está habilitada en el explorador. Si la compatibilidad con las cookies está deshabilitada, el estado de sesión se almacena en la dirección URL.

Importante

Cuando utilices el modo cookie Detección automática, establece que se regeneren los identificadores de sesión expirada. De este modo, se permite que un servidor web expire y regenere tokens, por lo que un posible atacante dispone de menos tiempo para capturar una cookie y obtener acceso al contenido del servidor web. Considera la opción de cambiar el valor del tiempo de espera a un valor menor que el predeterminado de 20 minutos.

Puedes configurar el estado de sesión sin usar cookies. Cuando se usa un identificador uniforme de recursos (URI) para administrar el estado de sesión, el identificador de sesión se incrusta como una cadena de consulta en la solicitud de URI y luego el URI se redirige a la dirección URL solicitada originalmente. La solicitud de URI cambiada se usa durante toda la sesión, por lo que no se necesita ninguna cookie.

Importante

Cuando uses un URI, establece que se regeneren los identificadores de sesión expirada. De este modo, se permite que un servidor web expire y regenere tokens, por lo que un posible atacante dispone de menos tiempo para capturar una cookie y obtener acceso al contenido del servidor web.

El uso de un URI para realizar un seguimiento del estado de sesión puede ayudar a evitar los inconvenientes de las cookies, como los problemas de compatibilidad de los exploradores y la posibilidad de que los usuarios deshabiliten las cookies. Sin embargo, el uso de un URI tiene los siguientes inconvenientes:

  • No se pueden usar direcciones URL absolutas sin que se pierda el estado de sesión, lo que significa que si un usuario va a otra aplicación y luego vuelve a la anterior, la entrada del usuario ya no existe en la página.
  • Los usuarios no pueden marcar las páginas web porque se pierde el estado de sesión.

Si decides usar cookies para almacenar el estado de la sesión, tendrás que tomar las siguientes decisiones de diseño:

  • Seleccionar un modo cookie: detección automática, uso de cookies, uso del perfil del dispositivo o uso de URI.
  • A menos que haya seleccionado el uso de URI, especifica el nombre de la cookie.
  • A menos que hayas seleccionado el uso de URI, especifica el número de minutos que deben transcurrir antes de que se agote el tiempo de espera de la cookie.
  • A menos que hayas seleccionado el uso de cookies, decide si quieres regenerar un identificador de sesión expirada.

2.2. Configuración de páginas y controles

Las páginas ASP.NET incluyen elementos adicionales que ASP.NET reconoce y procesa cuando se ejecuta la página. Las páginas ASP.NET también pueden contener controles personalizados reutilizables. Estos controles personalizados se procesan en el servidor. Lo que te permite usar el código de servidor para establecer las propiedades de las páginas web ASP.NET.

Nota:

Estas opciones solo se aplican a ASP.NET Web Forms. No se aplican a ASP.NET MVC ni a ASP.NET Web Pages.

IIS 8 te permite configurar las siguientes opciones de páginas y controles de usuario de ASP.NET:

  • Configuración del comportamiento: por ejemplo, si la página web mantiene su estado de vista y el estado de vista de los controles de servidor que esta contiene cuando termina la solicitud de página actual.
  • Configuración general: por ejemplo, espacios de nombres que se incluyen para todas las páginas.
  • Configuración de compilación: por ejemplo, si las páginas se compilan o interpretan.
  • Servicios: por ejemplo, si el estado de sesión está habilitado.

IIS 8 proporciona la configuración predeterminada para los controles y las páginas ASP.NET, pero puede cambiar esos valores según sea necesario. Por ejemplo, puedes establecer el archivo de página maestra para un sitio o habilitar el estado de vista.

Los controles web personalizados son componentes compilados que se ejecutan en el servidor y que encapsulan la interfaz de usuario y otras funciones relacionadas en paquetes reutilizables. En IIS 8, puedes especificar las asignaciones de prefijo de etiqueta y espacio de nombres de un control personalizado que se puede usar en varias páginas de una aplicación.

Agrega un control personalizado si quieres especificar la asignación de prefijo de etiqueta/espacio de nombres para un control personalizado que se va a usar en varias páginas de una aplicación.

Nota:

Agregar una opción de configuración añade la opción a nivel local y a cualquier nivel secundario que herede la opción.

Si decides configurar controles personalizados de ASP.NET, necesitarás la siguiente información para cada control que vayas a configurar:

  • Especificar el prefijo de etiqueta del control.
  • Especificar el espacio de nombres .NET del control.
  • Especificar el ensamblado en el cual está el control.

2.3. Configuración de la aplicación

Configura los valores de la aplicación cuando quieras almacenar pares de clave y valor como parte de la configuración en el archivo Web.config. La configuración de aplicaciones permite obtener acceso de manera rápida y sencilla a los datos de configuración almacenados correspondientes a su aplicación.

Para administrar los controles personalizados, puedes ver una lista que incluya todos los controles personalizados para un nivel de configuración determinado. Puedes ordenar esta lista por prefijo de la etiqueta, origen o ensamblado, o ámbito (local o heredado). También puedes agrupar controles por ámbito para saber qué controles personalizados se aplican en el nivel de configuración actual y qué controles personalizados se han heredado de un nivel primario.

Agrega un control personalizado si quieres especificar la asignación de prefijo de etiqueta/espacio de nombres para un control personalizado que se va a usar en varias páginas de una aplicación.

Nota:

Agregar una opción de configuración añade la opción a nivel local y a cualquier nivel secundario que herede la opción.

Si decides configurar la aplicación, necesitarás la siguiente información para cada opción que vayas a configurar:

  1. Especificar un nombre para la configuración.
  2. Especificar un valor para la configuración.

2.4. Configuración de compilación de .NET

Para que el código de la aplicación atienda las solicitudes de los usuarios, ASP.NET debe compilar primero el código en uno o varios ensamblados. Los ensamblados son archivos que tienen la extensión de nombre de archivo .dll. Configura opciones de compilación de .NET en IIS 8 si quieres controlar cómo se compila el código de ASP.NET.

IIS te permite configurar las siguientes opciones de compilación de .NET:

  • Opciones de lote, como el tamaño máximo de archivo que se puede incluir en un lote y el número máximo de páginas que puede haber en cada compilación por lotes.
  • Opciones de comportamiento, como el número de veces que se compilan dinámicamente los recursos antes de que se reinicie la aplicación.
  • Opciones generales, como el lenguaje de programación predeterminado que se usa en los archivos de compilación dinámicos.

2.5. Configuración de globalización de .NET

La globalización es el proceso de internacionalizar el código de la aplicación, adaptando después la aplicación a otros idiomas y referencias culturales. El proceso de internacionalización permite traducir, almacenar, recuperar y presentar el contenido de la aplicación para cualquier configuración regional, usando la misma base de código de aplicación siempre que sea posible. La configuración regional es la combinación de idioma y entorno cultural. Este concepto incluye formatos de fecha, horas, monedas, números de teléfono, etc. El proceso de localización consiste en adaptar la aplicación a otras configuraciones regionales mediante la traducción y la adecuación de formato del contenido de acuerdo con la referencia cultural, a ser posible sin alterar el código.

Puedes cambiar las opciones de globalización de las aplicaciones ASP.NET en el nivel de servidor web si quieres que se apliquen a todas las aplicaciones ASP.NET del servidor. También puedes modificar las opciones de globalización de ASP.NET para los sitios, aplicaciones, directorios y archivos.

IIS permite configurar los siguientes valores de globalización:

  • Configuración de la referencia cultural, como la referencia cultural o el idioma de la interfaz de usuario.
  • Valores de codificación, como la codificación de los encabezados de respuesta.

Nota:

Al modificar una opción de configuración, se modifica en el nivel local y en todos los niveles secundarios que la hereden.