OK, isso é realmente estranho e eu nem sei como descrevê-lo corretamente. Um cliente queixou-se de que uma página específica do nosso site não estava funcionando e um de nossos técnicos internos também conseguiu reproduzir o problema. A maior parte do site está funcionando bem. Isso é implantado no Serviço de Aplicativo do Azure.
Eu verifiquei executando exatamente a mesma página que o técnico, e funcionou bem para mim. A solicitação inteira é idêntica, exceto para cookies de autenticação. Quando eu executo o pedido, recebo 200 OK, mas o técnico e o cliente recebem 404 NOT FOUND.
O problema só começou depois que fizemos uma troca VIP esta manhã no Serviço de Aplicativo do Azure (que eu sou novo). Implantei uma atualização de serviço esta manhã para o Intercâmbio de Implantação de Fase e, alguns minutos depois, o VIP Swap. Eu acho que tanto o cliente quanto o técnico tiveram o navegador aberto e a sessão ativa durante o Swap VIP.
Eu fiz algumas soluções de problemas e aqui está o que eu descobri. Eu posso usar o Fiddler para capturar o traço exato da página da Web que funciona bem para mim. Então, posso copiar apenas um valor da solicitação para o técnico que recebe o erro 404 e, de repente, também posso reproduzir o erro 404. A diferença é um cookie:
Cookie: ARRAffinity=blahblahblahblah;
Meu entendimento básico é que essa é uma chave para identificar a qual servidor o usuário está se conectando, para que eles obtenham afinidade com uma instância específica no conjunto com balanceamento de carga (2 servidores). Conseguimos corrigir o problema fazendo com que o técnico e o cliente excluíssem todos os cookies no navegador, mas mesmo o logout e o login não corrigiriam o problema.
Por que uma chave de afinidade "obsoleta" causaria um erro aleatório 404 em uma página específica? É possível que algumas das solicitações do usuário estejam realmente sendo direcionadas para o site de implantação de teste antigo, mesmo que estejam atingindo a URL que se conecta ao site de implantação de Produção?