mardi 15 mars 2016

Boucle de redirection - ERR_TOO_MANY_REDIRECTS - l'enfer du DotNET

Une fois déployée sur votre Serveur de production, votre application ASP.NET ne fonctionne pas mais alors pas du tout ! Vous avez un message "boucle de redirection" ERR_TOO_MANY_REDIRECTS dont vous n'arrivez pas à vous débarrasser. J'ai la solution !

Erreur boucle de redirection
Votre application ne répond pas correctement à la requête http et le site part en boucle !

Quel est le problème avec cette "Boucle de redirection" ?

Et c'est bien là  l'enfer du DotNET car vous avez testé en debug avec Visual Studio, vous avez déployé en local et ça fonctionne parfaitement. Mais une fois le site déployé sur le serveur de production c'est la catastrophe. Et le message d'erreur semble comme d'habitude, totalement bidon sans aucun rapport avec l'erreur réelle.

Je n'ai pas les moyens d'investigation sur le serveur, le débogueur à distance ne fonctionne pas et je ne souhaite pas l'installer cela encombrerait mon serveur.

Quelles sont les différences au niveau d'IIS ?

Sur ma machine de développement, je regarde :

Version d'IIS sur ma machine de développement
Sur le serveur, je fais la même chose :

Version d'IIS sur le serveur de développement
Il s'agit dans les deux cas d'un IIS 7.5.7600.16385 ... On dirait bien la même chose !

Donc au niveau d'IIS pas de différence !

Si quand même, a noter :
La langue est différente : Serveur de dev en Fr, Serveur de prod en Gb ... Et là solution est là !

Ce qui met la puce à l’oreille

Dans ce cas, on sait par expérience que toute la littérature du monde ne pourra pas vous être utile. Par là, on vous dit de supprimer les cookies de votre application, par ailleurs on vous indique une autre solution, toutes sont aussi farfelues. Je vais chercher pendant un certain temps. Et puis, je vais me raccrocher au message d'erreur de ma page d'erreur, c'est moi qui l'aie mise en place :
PageErreur.Aspx?msg=String+was+not+recognized+as+a+valid+DateTime.

Qu'est ce qui peut bien faire qu'une DateTime ne soit pas valide ?

Solution DateTime non valide dans le Web.config

La Culture, mais oui, c'est la culture qui rend ma DateTime non valide, je lis alors cette page :


Dans le Web.config, on peut configurer la culture du site web :

<configuration>
   <system.web>
     <globalization culture="en-GB"/>
   </system.web>
</configuration>

Me voilà avec la puce à l'oreille, je trouve une ligne un peu plus moderne à ajouter dans mon Web.config :

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto" />

Et le tour est joué ! Mon site fonctionne !

Conclusion, c'est l'enfer du .NET

Il faut bien le reconnaître ASP.NET, c'est purement l'enfer et ça depuis des années. On est passé du premier serveur IIS qui fonctionnait à peut prêt : IIS 5.0. Mais parfois les messages d'un site en rade était ... Cosmiques et surtout ne correspondaient en rien avec la solution à mettre en oeuvre. Aujourd'hui avec 7.5 et 8.0 la partie configuration est un peu plus claire, surtout depuis la réorganisation entre Pool d'Application, Site Web et Répertoire Virtuel, cela apporte de la clarté mais il traîne encore trop de vacheries qui devraient disparaître à mon sens.

Le fichier Web.config, suivant les versions, est farcie de ligne stupides sans intérêt.










Aucun commentaire:

Publier un commentaire