Método para manter a Sessão: Algumas pessoas dizem para definir session.timeout=-1, ou um número menor que 0. Este método definitivamente não é possível. O tempo de cálculo da sessão é em minutos e deve ser um número inteiro maior ou igual a 1. Alguém disse para definir session.timeout=99999. Isso também não funciona, a sessão tem limite de tempo máximo. Depois de testar, descobri que o valor máximo é 24 horas, o que significa que o máximo que você pode ter é session.timeout=1440, e 1441 não é permitido, haha. Meu ambiente de teste: win2003+IIS6.0+ASP3.0.
Portanto, é impossível fazer com que a sessão nunca expire definindo o tempo de expiração de session.timeout. Escrever em Cookies é um método melhor. Existem muitos tutoriais desse tipo na Internet, então não vou abordá-los aqui! Outro método é configurar um iframe oculto na página onde a sessão será mantida. De vez em quando (desta vez é menor que o tempo session.timeout), atualize a página vazia no quadro! O método de implementação é o seguinte:
Adicione o seguinte à página da sessão onde deseja mantê-lo:
Copie o código do código da seguinte forma:
<largura do iframe=0 altura=0 src=/blog/SessionKeeper.asp></iframe>
Crie o arquivo SessionKeeper.asp no mesmo diretório. Código XML/HTMLCopiar
Copie o código do código da seguinte forma:
<html>
<cabeça>
<meta http-equiv=Atualizar conteúdo=900000;url=sessionKeeper.asp>
<!--Atualize-se a cada 900 segundos para se comunicar com o servidor e evitar que a sessão seja perdida-->
</head>
</html>
Este método é relativamente comum e existe outro método semelhante ao acima, mas não usa meta para atualizar automaticamente iframes aninhados. Ele usa javascript:window.setTimeout(functionname(),10000); para chamar automaticamente uma função em intervalos. É claro que a função ainda precisa se conectar a um arquivo vazio. O método específico é o seguinte:
Adicionar: código de cópia JavaScript para a sessão a ser mantida
Copie o código do código da seguinte forma:
<script id=Backlinguagem=javascript></script>
<linguagem de script=javascript>
função mantém sessão(){
document.all[Voltar].src=/blog/SessionKeeper.asp?RandStr=+Math.random();
//O RandStr=Math.random aqui é apenas para tornar o valor de back.src diferente a cada vez para evitar que a atualização do mesmo endereço seja inválida.
window.setTimeout(keepsession(),900000); //Chama-se a cada 900 segundos
}
mantémsessão();
</script>Desta forma, basta criar um arquivo sessionKeeper.asp com conteúdo vazio no mesmo diretório!
O problema não foi resolvido: Não deve haver problema em manter a sessão através do método acima. O valor padrão do IIS para limpar a sessão sem solicitação é de 20 minutos. O tempo que defini para cada serviço interativo é muito menor que esse valor. mas demora cerca de um dia para mim. Depois de muito tempo, a sessão ainda desaparece sem motivo! deprimido.
Mais tarde, procurei em vários lugares na Internet e finalmente encontrei a resposta: Acontece que para proteger o servidor, o IIS tem um conceito de reciclagem! Depois de testar por muito tempo, finalmente consegui um entendimento geral (não ria de mim ^-^). Vamos primeiro dar uma olhada onde essa reciclagem é instalada.
Inicie o Gerenciador do IIS->Pool de Aplicativos->Clique com o botão direito->Propriedades->guia Reciclar. Há um item que funciona por padrão, que é o primeiro item: Reciclar Processo de Trabalho (Minutos). O valor padrão é 1740 minutos, cerca de. 29 horas. O que ele quer dizer? Meu entendimento pessoal: todas as sessões em andamento serão apagadas automaticamente 1.740 minutos após session.timeout. Este valor pode ser definido para um máximo de 4.000.000, o que é aproximadamente mais de 2.700 dias! Cancelei diretamente sem que ele reciclasse automaticamente! O problema está finalmente resolvido.
Além disso, existem vários outros itens nesta caixa de diálogo de propriedades:
O segundo item deve ser reciclado quando o número de usuários conectados ultrapassar um determinado número.
O terceiro item é reciclá-lo automaticamente em um determinado horário.
Na guia Desempenho, encerre o processo de trabalho após ficar ocioso por esse período de tempo. É aqui que o tempo session.timeout padrão do IIS é definido. O valor padrão é 20 minutos. O valor máximo aqui também pode ser definido como 4000000, que é diferente de definir o valor máximo de session.timeout como 1440 na página ASP. Não testei se definir um valor superior a 1440 aqui funcionará. Então, por que o valor máximo de session.timeout na página ASP pode ser apenas 1440, mas pode ser definido tão grande nas propriedades do IIS? Deve ser um mecanismo de proteção: qualquer usuário pode definir o valor de session.timeout na página ASP, mas apenas o administrador pode defini-lo no IIS. Os dois têm permissões diferentes, portanto o intervalo de configuração é diferente.