Compartir a través de


Cómo: Guardar valores en un estado de aplicación

Actualización: noviembre 2007

El estado de aplicación es un repositorio de datos que está disponible para todas las clases de una aplicación ASP.NET. El estado de aplicación se almacena en la memoria del servidor y ofrece más rapidez que el almacenamiento y la recuperación de información de una base de datos. A diferencia del estado de sesión, que es específico de las sesiones de un solo usuario, el estado de aplicación se aplica a todos los usuarios y sesiones. Por consiguiente, el estado de aplicación es un lugar útil para almacenar pequeñas cantidades de datos utilizados a menudo que no cambian de un usuario a otro.

El estado de aplicación se almacena en la clase HttpApplicationState, de la cual se crea una nueva instancia la primera vez que un usuario tiene acceso a un recurso de dirección URL en una aplicación. La clase HttpApplicationState se expone a través de la propiedad Application.

El estado de aplicación almacena los datos como tipos de datos Object. Por consiguiente, es necesario convertir de nuevo los datos al tipo adecuado al recuperarlos.

El estado de aplicación se almacena en la memoria del servidor, por lo que una cantidad grande de datos puede llenarla rápidamente. Si se reinicia la aplicación, los datos de estado de aplicación se pierden. El estado de aplicación no se comparte entre varios servidores dentro de una batería de servidores Web o entre los procesos de trabajo de un hospedaje multiproceso en un único equipo. Por último, el estado de aplicación es de subprocesamiento libre, por lo que los datos almacenados en dicho estado deben tener compatibilidad integrada con la sincronización. Para obtener más información sobre estas consideraciones, vea Información general sobre el estado de aplicación de ASP.NET y Recomendaciones de administración de estado de ASP.NET.

Para escribir un valor en el estado de aplicación

  • En la aplicación, establezca el valor de la variable en la clase HttpApplicationState.

    En el ejemplo de código siguiente se muestra cómo establecer la variable de aplicación Message en una cadena.

    Application("Message") = "Welcome to the Contoso site."
    
    Application["Message"] = "Welcome to the Contoso site.";
    

Para escribir un valor en el estado de aplicación cuando se inicia la aplicación

  • En el controlador Application_Start del archivo Global.asax de la aplicación, establezca el valor de la variable de estado de aplicación. Al igual que en una página .aspx estándar, la clase HttpApplicationState se expone a través del objeto Application.

    En el ejemplo de código siguiente se muestra cómo establecer la variable de aplicación Message en una cadena y cómo inicializar la variable PageRequestCount a 0.

    Application("Message") = "Welcome to the Contoso site."
    Application("PageRequestCount") = 0
    
    Application["Message"] = "Welcome to the Contoso site.";
    Application["PageRequestCount"] = 0;
    

Escribir un valor en el estado de aplicación con bloqueo

Varios subprocesos pueden tener acceso simultáneamente a las variables de estado de aplicación. Por consiguiente, para evitar datos no válidos, antes de establecer los valores es necesario bloquear el estado de aplicación para que sólo pueda escribir en él un subproceso.

Nota:

Debería modificar siempre los datos de estado de aplicación dentro de una instrucción lock a menos que haya establecido algún otro tipo de bloqueo. Para obtener más información, vea Sincronizar datos para subprocesamiento múltiple.

Para escribir un valor en el estado de aplicación con bloqueo

  • En el código en el que ha establecido la variable de aplicación, llame al método HttpApplicationState.Lock, establezca el valor del estado de aplicación y, a continuación, llame al método HttpApplicationState.UnLock a fin de desbloquear el estado de aplicación y liberarlo para otras solicitudes de escritura.

    En el ejemplo de código siguiente se muestra cómo bloquear y desbloquear el estado de aplicación. El código incrementa la variable PageRequestCount en uno (1) y, a continuación, desbloquea el estado de aplicación.

    Application.Lock()
    Application("PageRequestCount") = _
        CInt(Application("PageRequestCount")) + 1
    Application.UnLock()
    
    Application.Lock();
    Application["PageRequestCount"] = 
        ((int)Application["PageRequestCount"])+1;
    Application.UnLock();
    

Vea también

Tareas

Cómo: Leer los valores de un estado de aplicación

Conceptos

Información general sobre la administración de estados de ASP.NET

Recomendaciones de administración de estado de ASP.NET

Otros recursos

Estado de la aplicación de ASP.NET