J'ai deux applications Web asp.net partagées sur un serveur virtuel. Tout fonctionnait bien. J'ai dû passer à un nouveau serveur virtuel avec les mêmes spécifications chez un autre fournisseur.L'authentification basée sur les formulaires Asp.NET ne fonctionne pas dans IE9 ou 10
La première application de formulaire Web fonctionne très bien.
Le problème, la deuxième application de formulaire Web ne permettra pas à l'utilisateur d'être authentifié. J'utilise l'authentification basée sur les formulaires asp.net. Pour une raison quelconque, il n'émet pas le ticket d'authentification des formulaires. J'ai réexécuté le projet dans mon environnement de développement et l'authentification fonctionne très bien.
Je ne suis pas sûr si IIS est mal configuré ou si quelque chose d'autre est mal configuré. J'ai triplé le nouveau serveur avec l'ancien serveur et tous les paramètres d'IIS semblent être identiques. J'utilise asp.net 4.0 et j'utilise un en-tête d'hôte IIS pour différencier les demandes entre les deux sites. Après plusieurs heures de tests et de recherches, tout ce que j'ai pu conclure est que le deuxième site Web sur le serveur de production ne parvient pas à authentifier les utilisateurs dans Internet Explorer 9 & 10. Tous les autres navigateurs fonctionnent correctement. Lorsque vous exécutez le site Web en mode de compatibilité dans IE9 ou 10, cela fonctionne également.
Voici comment je lance les formulaires ticket d'authentification dans le code:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, //Ticket Version
"", //Associated User Name
DateTime.Now, //Date/Time Issued
DateTime.Now.AddMinutes(60), //Time to expire
false, //Persistent Cookie
user_id, //User-Data --- User Role
FormsAuthentication.FormsCookiePath); // Cookie Path
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
//Add cookie to the list
Response.Cookies.Add(cookie);
Voici ma configuration d'authentification dans mon fichier web.config:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" timeout="90" path="/" name=".survey" requireSSL="false" slidingExpiration="true" defaultUrl="survey.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
<authorization>
<deny users="?"/>
<allow roles="Standard, Admin"/>
</authorization>
est ici l'autre chose. La première application de formulaire Web (celle qui fonctionne) utilise le même code d'authentification de base. Cela fonctionne très bien sur tous les navigateurs. La seule différence entre l'authentification de deux applications est que la première application (celle qui fonctionne) nécessite SSL.
C'est de loin l'erreur la plus unique que j'ai jamais rencontrée. S'il vous plaît laissez-moi savoir si vous avez un conseil ou si je peux vous fournir plus de détails.
Merci pour votre aide.
Avez-vous des erreurs ou l'utilisateur n'est pas authentifié? Avez-vous testé sur différentes machines pour voir si le problème persiste? – rcdmk
Je ne trouve pas d'erreurs et oui le problème est persistant. – user2487963