"I said that it seems like a load-balancing/web cluster configuration issue. However, I found out later that the website is not load-balanced - It's a single server."
Só porque é um servidor único, não significa que não haja balanceamento de carga. O IIS possui um recurso chamado "Web Garden", que divide o trabalho da Web em mais de um processo, para que ele possa ser distribuído por várias CPUs.
É como um pequeno "Web Farm" - daí o nome "Web Garden". :)
Um efeito ao usar um Web Garden é que ele faz com que as variáveis da sessão InProc parem de funcionar corretamente, pois você pode acabar em um processo de trabalho diferente em cada solicitação de página. InProc (em processo) só funciona de forma confiável se você sempre termina no mesmo processo .
Solução 1:
- Certifique-se de que o IIS não esteja configurado para usar um Web Garden. Para fazer isso:
- Abra o gerenciador do IIS.
- Determine qual pool de aplicativos você está usando no aplicativo da web.
- Clique com o botão direito no seu Pool de aplicativos e selecione " Propriedades avançadas ".
- Role para baixo e defina " Máximo de processos de trabalho " para
1
.
Solução2:
- Useumservidordeestadodesessãocujaúnicatarefaégerenciarestadosdesessãoparatodososprocessosdetrabalho.
- Emseguida,altereoaplicativodaWebdeInProcparaStateServer.
- Confira
Configure um servidor de estado para manter o estado da sessão (IIS 7) para começar isso. :)
Confira este blog do MSDN: In -Gestão do Estado da Sessão do Contrato
Descreve as opções de estado da sessão e como solucionar problemas de perda de sessão InProc.