<machineKey decryptionKey = “AutoGenerate”… sendo ignorado pelo IIS. Não invalidará os cookies da sessão anterior

(Veja a pergunta abaixo para mais contexto):

Há alguma situação em que

<machineKey
      validationKey="AutoGenerate,IsolateApps"
      decryptionKey="AutoGenerate,IsolateApps"/>

no web.config falharia na AutoGenerate de uma nova machineKey na reciclagem do Pool de Aplicativos? Esse é o comportamento que estou vendo ...

Estou usando ASP.NET FormsAuthentication padrão em um aplicativo MVC. Se eu registrar um usuário usandoFormsAuthentication.GetAuthCookie e não use um cookie persistente (contando com a sessão do navegador para lembrar meu estado autorizado), eu esperaria que a reciclagem do IIS Pool de Aplicativos invalidasse o conhecimento da sessão sobre esse cookie ... e, assim, fazer logout de todos os usuários que não têm cookies persistentes.

Isso acontece em uma das minhas instalações do IIS (XP), mas em uma configuração diferente do IIS (Server 2K3) o cookie FormsAuthentication (sob o nome padrão ".ASPXAUTH") permanece válido e continua a autorizar o usuário.

Alguém sabe por que isso está acontecendo ou qual configuração controla esse comportamento?

Obviamente, reciclar o pool de aplicativos não tem controle sobre se o navegador ainda envia ou não o cookie .ASPXAUTH (desde que eu não tenha fechado meu navegador e o cookie não tenha expirado).

No caso da instalação do IIS que nega corretamente a autenticação após uma reciclagem, posso ver o cookie de entradaRequest.Cookies durante oApplication_BeginRequest evento ... mas uma vez que o controle se move para o próximo evento disponível em Global.asax.cs(Application_AuthenticateRequest), o cookie foi removido doRequest.Cookies coleção.

Por que isso não acontece para as configurações do IIS / ASP.NET?

Caso isso não esteja claro, uma maneira mais simples de formular a pergunta é:

PorqueHttpContext.Current.Request.Cookies[".ASPXAUTH"] mudar de{System.Web.HttpCookie} para null quando eu passo, em um único pedido, deApplication_BeginRequest paraApplication_AuthenticateRequest?

Mais informações de depuração:

Se eu anexar o seguinte código ao evento FormsAuthentication_OnAuthenticate do Global.asax.cs ...

var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
    var val = cookie.Value;
    try
    {
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(val);
    }
    catch (Exception)
    {
    }
}

... então durante um pedidoantes Eu reciclar o pool de aplicativos do IIS, nenhuma exceção será detectada. Depois de reciclar o IIS App Pool, quando o mesmo cookie .ASPXAUTH é enviado do navegador, uma exceção Criptográfica é capturada ("Preenchimento é inválido e não pode ser removido").

Por que é isso?

questionAnswers(2)

yourAnswerToTheQuestion