Eu tenho um web farm composto por 5 máquinas Server 2008R2 executando o IIS 7.5. Todos eles compartilham estado de sessão usando um único servidor separado executando o Serviço de Estado do ASP.NET (este também executa o 2008 R2). Tudo está funcionando maravilhosamente.
No entanto, eu adicionei agora um sexto servidor, este executando o 2012 / IIS 8.0. Por toda a vida, não consigo fazer com que este servidor compartilhe o estado da sessão com os outros servidores.
A configuração machineKey é exatamente a mesma (anônima):
<machineKey validationKey="XYZ" decryptionKey="ZYX" validation="SHA1" />
O ID do aplicativo é exatamente o mesmo em todos os servidores (nós executamos vários sites, mas todos têm o ID criado programaticamente, a configuração é idêntica, verificada em tempo de execução também):
/LM/W3SVC/10351/ROOT
Todos os sites também têm o mesmo AppPath, também verificado em tempo de execução:
D:\SomeSite\SomApp\
A configuração da sessão é exatamente a mesma:
<sessionState mode="StateServer" partitionResolverType="MyStateServerPartitionResolver" stateNetworkTimeout="30" timeout="20" />
A classe MyStateServerPartitionResolver é muito simples, apenas abstraindo o fato de que nós carregamos a string de conexão através de nossa própria configuração (o valor de connectionString é idêntico em todos os servidores, também verificado):
public class MyStateServerPartitionResolver : IPartitionResolver
{
private string connectionString;
public void Initialize()
{
connectionString = ConfigSettings.StateServerConnectionString;
}
public string ResolvePartition(object key)
{
return connectionString;
}
}
Todos os sites são executados no .NET 4.0 e a configuração do pool de aplicativos também é a mesma.
A única diferença que posso reduzir é o fato de que os servidores em funcionamento estão todos executando o IIS 7.5, enquanto o não operacional está executando o IIS 8.0. No entanto, eu esperaria que esse fosse um cenário suportado, já que é difícil fazer uma atualização sem interrupção.
Alguma sugestão sobre o que posso fazer para depurar isso? Ou qualquer confirmação de documentação que o IIS 7.5 & 8.0 não pode compartilhar o estado da sessão?