Compartilhar via


Como: Salvar valores no estado do aplicativo

O estado do aplicativo é um repositório de dados que está disponível para todas as classes em um aplicativo ASP.NET.O estado do aplicativo é armazenado na memória no servidor e é mais rápido que armazenar e recuperar informações em um banco de dados.Ao contrário do estado de sessão, que é específico a uma sessão de usuário único, o estado do aplicativo se aplica a todos os usuários e sessões.Portanto, o estado do aplicativo é um local útil para armazenar pequenas quantidades de dados muito usados que não serão alteradas de um usuário para outro.

O estado do aplicativo é armazenado na classe HttpApplicationState, uma nova instância que é criada na primeira vez que um usuário acessa qualquer recurso URL em um aplicativo.A classe HttpApplicationState é exposta através da propriedade Application.

O estado do aplicativo armazena dados como tipo de dados Object.Portanto, você deve converter os dados de volta para o tipo apropriado quando recuperá-los.

O estado do aplicativo é armazenado na memória do servidor, portanto, uma grande quantidade de dados no estado do aplicativo pode preencher rapidamente a memória do servidor.Se o aplicativo for reiniciado, dados do estado do aplicativo serão perdidos.O estado do aplicativo não é compartilhado entre vários servidores em um Web farm ou entre processos do operador em um ambiente Web.Finalmente, o estado do aplicativo é de segmentação livre, para quaisquer dados que estejam armazenados no estado do aplicativo, estes devem ter suporte interno a sincronização.Para obter mais informações sobre essas considerações, consulte Visão geral do estado do aplicativo ASP.NET e Recomendações sobre Gerenciamento de Estado do ASP.NET.

Para gravar um valor de estado do aplicativo

  • Em seu aplicativo, defina o valor da variável na classe HttpApplicationState.

    O exemplo de código a seguir mostra como você pode definir a variável de aplicativo Messagepara uma sequência de caracteres.

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

Para gravar um valor de estado do aplicativo quando o aplicativo for iniciado

  • No manipulador Application_Start do arquivo Global.asax do seu aplicativo, defina o valor da variável de estado do aplicativo.Simplesmente como em uma página .aspx regular, a classe HttpApplicationState é exposta através do objeto Application.

    O exemplo de código a seguir mostra como você pode definir a variável de aplicativo Message como uma sequência de caracteres e inicializar a variável PageRequestCount como 0.

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

Escrevendo um valor para estado de aplicativo com bloqueio

Variáveis do estado do aplicativo podem ser acessadas por várias threads ao mesmo tempo.Portanto, para evitar dados inválidos, você deve bloquear o estado do aplicativo para gravação por apenas um segmento antes de definir valores.

Observação:

Você sempre deve modificar dados do estado do aplicativo em uma instrução de bloqueio, a menos que você tenha definido algum outro tipo de bloqueio.Para obter mais informações, consulte Sincronizando dados de multithreading.

Escrevendo um valor para estado de aplicativo com bloqueio

  • No código em que você definir a variável do aplicativo, chame o método HttpApplicationState.Lock, defina o valor de estado do aplicativo e, em seguida, chame o método HttpApplicationState.UnLock para desbloquear o estado do aplicativo, liberando-o para outras solicitações de gravação.

    O exemplo de código a seguir mostra como você pode bloquear e desbloquear o estado do aplicativo.O código aumenta a variável PageRequestCount por 1 e, em seguida, desbloqueia o estado do aplicativo.

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

Consulte também

Tarefas

Como: Ler valores de estado do aplicativo

Conceitos

Visão Geral sobre o Gerenciamento de Estado do ASP.NET

Recomendações sobre Gerenciamento de Estado do ASP.NET

Outros recursos

Estado de Aplicativo do ASP.NET