Pergunta

O evento OnSessionStart / Session_Start ainda só fogo uma vez (total) em um ambiente de farm de servidores, ou desde pedidos são tratados por vários servidores, poderia disparar até uma vez por servidor?

ASP.NET / IIS6 ou 7

Deve não se supor que o servidor está usando Fixo Sessions.

Foi útil?

Solução

Com uma instalação padrão do IIS, a resposta é "não" - o Session_Start vai em fogo geral várias vezes. Um cliente irá criar uma nova sessão em cada servidor diferente que ela atinge. A mesma coisa acontece se você estiver usando a opção Web Garden no IIS.

Se você não dependem de sessão e você tem uma fazenda de servidor que são geralmente melhor fora de desativação estado de sessão completamente. Aqui está como fazê-lo: http://support.microsoft.com/kb/306996

Se você depender de Sessão sua melhor opção é provavelmente o serviço do servidor Estado ASP.NET. Todos os servidores do farm vai usar um único servidor para o estado da sessão, e que irá garantir que Session_Start só é acionado uma vez. Para os lotes de fundo e detalhes sobre a configuração ler este (olhar para o "Modo de Estado do servidor" para obter instruções específicas): http://aspdotnetdevs.blogspot.com/2008/12 /aspnet-session-state-and-modes.html

Outras dicas

Além de Thomas:. Tudo depende das suas configurações de Estado de Sessão

em web.config, <sessionState mode="" >

Se você usar mode="InProc" você vai ter vários eventos de sessão e SessionStart, 1 por servidor visitado.

Nos outros modos (StateServer ou SqlServer) você terá 1 sessão e 1 SessionStart. Você vai não obter um evento SessionEnd em tudo.

Em uma fazenda, você estaria usando SQL Server ou um servidor de estado para o gerenciamento de estado de sessão em todos os servidores no farm. É ter esse único servidor cuidar de seu estado que garante que OnSessionStart só deve ser chamado uma vez por sessão e não há necessidade de ter que ter sempre todos os pedidos voltar para o mesmo servidor.

A principal desvantagem de usar um único servidor para manter o estado da sessão é que você não tem mais um evento OnSessionEnd.

meu entendimento é que uma vez que um pedido chegar a um servidor no farm, todos os futuros pedidos do mesmo cliente deve ser redirecionado para o mesmo servidor no farm.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top