PROBLEMA: As variáveis de sessão são perdidas intermitentemente em aplicativos ASP.NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 316148 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Variáveis de sessão podem ser perdidas intermitentemente em aplicativos Microsoft ASP.NET.

Quando esse problema ocorre em um cluster do Microsoft Application Center 2000, as sessões cairá no controlador de quando o software antivírus examina o Web.config ou os arquivos global.asax. A verificação irá disparar uma replicação, fazendo com que as sessões para ser perdida em cada servidor membro detalhadamente como o arquivo será substituído.

Causa

Há várias causas possíveis para esse problema. Este artigo aborda uma possível causa: dados de sessão que é perdidos devido a atividade de software antivírus.

Esse problema pode ocorrer quando um software antivírus examina os arquivos de aplicativo da Web. Durante o processo de verificação, o software antivírus pode marcar o global.asax, o Web.config e/ou os arquivos Machine.config como modificado. Essa modificação solicita a reinicialização do Microsoft .NET Framework o aplicativo da Web. Se os dados da sessão está armazenado em processo, todos os dados de sessão serão perdidos, sempre que um aplicativo da Web for reiniciado.

Resolução

Para resolver esse problema, use um dos seguintes métodos:
  • Configure seu software antivírus para que ele não examina arquivos .config e. asax.
  • Contate o fabricante do software antivírus para obter instruções.
  • Configure seu aplicativo da Web para armazenar dados da sessão fora de processo.Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    307598Visão geral de gerenciamento de estado ASP.NET

Situação

Esse comportamento é por design.

Mais Informações

Etapas para reproduzir o comportamento

Observação Este exemplo pressupõe que o aplicativo Web armazena dados da sessão em processo (que é o comportamento padrão).
  1. Siga estas etapas para criar um aplicativo da Web no Microsoft Visual Basic .NET:
    1. Abra o Microsoft Visual Studio .NET.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Tipos de projeto e, em seguida, clique em ASP.NET Web Application em modelos .
    4. Na caixa de texto local , digite http://localhost/TestWeb1 .
    5. Clique em OK para criar o projeto. WebForm1.aspx é adicionado ao seu projeto por padrão.
  2. Na janela Solution Explorer, clique com o botão direito do mouse em WebForm1.aspx e, em seguida, clique em View Code .
  3. Adicione o seguinte código ao procedimento de evento Page_Load :
    Response.Write("<b>Session Variable Test</b><br>&#xa0;<br>")
    If IsNothing(Session("TestVal")) Then
        Response.Write("TestVal old value: <b>nothing</b>")
        Session("TestVal") = 0
    Else
        Response.Write("TestVal old value: " & Session("TestVal"))
    End If
    Session("TestVal") += 1
    Response.Write("<br>TestVal new value: " & Session("TestVal"))
    					
  4. No menu Build , clique em Build Solution .
  5. Na janela Solution Explorer, clique com o botão direito do mouse em WebForm1.aspx e, em seguida, clique em View in Browser .
  6. No seu navegador, clique em Atualizar . Observe que a página exibe o valor inicial a variável de sessão como nada .
  7. Clique em Atualizar novamente várias vezes. Observe que o valor inicial a variável de sessão é alterado para um número que incrementa sempre que você atualizar a página.
  8. Mantenha a página aberta no navegador.
  9. No bloco de notas, abra o arquivo global.asax da pasta do seu projeto. O arquivo global.asax deste projeto TestWeb1 normalmente está localizado na pasta C:\Inetpub\wwwroot\TestWeb1\Global.asax.
  10. Mover o ponto de inserção para uma linha em branco no arquivo global.asax e, em seguida, pressione ENTER para adicionar uma segunda linha em branco. Você deve executar essa etapa para marcar o arquivo como tendo sido modificado.
  11. Salve as alterações ao arquivo global.asax.
  12. No navegador, clique em Atualizar novamente. Observe que a variável de sessão TestVal exibe um valor inicial de nada . As variáveis de sessão em processo são perdidas.

Referências

Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
303881PROBLEMA: As variáveis de sessão são perdidas em aplicativos da ASP Web
317604Como configurar o SQL Server para armazenar o estado da sessão ASP.NET
871042Por que meu aplicativo de ASP.NET está sendo reiniciado?

Propriedades

ID do artigo: 316148 - Última revisão: quinta-feira, 23 de fevereiro de 2006 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palavras-chave: 
kbmt kbcaching kbconfig kbprb kbstate kbsysadmin KB316148 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 316148

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com