OK, celui-ci est vraiment bizarre et je ne sais même pas comment le décrire correctement. Un client s'est plaint qu'une page spécifique de notre site Web ne fonctionnait pas, et l'un de nos techniciens internes a également pu reproduire le problème. La majeure partie du site Web fonctionne bien. Le site est déployé sur Azure App Service.
J'ai vérifié en utilisant exactement la même page que le technicien, et cela a bien fonctionné pour moi. La requête entière est identique, à l'exception des cookies d'authentification. Lorsque je lance la requête, j'obtiens 200 OK, mais le technicien et le client obtiennent 404 NOT FOUND.
Le problème n'a commencé qu'après avoir effectué un échange VIP ce matin sur Azure App Service (que je ne connais pas). Ce matin, j'ai déployé une mise à jour de service dans l'échange de déploiement de mise en scène, puis quelques minutes plus tard, j'ai effectué l'échange VIP. Je pense que le client et le technicien avaient tous deux leur navigateur ouvert et leur session active pendant l'échange VIP.
J'ai fait un peu de dépannage, et voici ce que j'ai découvert. Je peux utiliser Fiddler pour capturer la trace exacte de la page Web qui fonctionne bien pour moi. Ensuite, je peux copier une seule valeur de la requête pour le technicien qui obtient l'erreur 404, et soudain, je peux reproduire l'erreur 404 également. La différence est un cookie :
Cookie: ARRAffinity=blahblahblahblah;
D'après ce que j'ai compris, il s'agit d'une clé permettant d'identifier le serveur auquel l'utilisateur se connecte afin qu'il obtienne une affinité avec une instance spécifique dans l'ensemble équilibré en charge (2 serveurs). Nous avons pu résoudre le problème en demandant au technicien et au client de supprimer tous les cookies dans leur navigateur, mais même en se déconnectant et en se reconnectant, le problème n'a pas été résolu.
Pourquoi une clé d'affinité "périmée" provoquerait-elle un 404 aléatoire sur une page spécifique ? Est-il possible que certaines requêtes de l'utilisateur soient en fait dirigées vers l'ancien site de déploiement de transit, même si elles touchent l'url qui se connecte au site de déploiement de production ?