2009-05-09 5 views
1

J'ai créé une application ASP.NET MVC et utilisé l'authentification par formulaires. Dans mon action du contrôleur je:Pourquoi mon application ASP.NET MVC demande-t-elle l'authentification Windows?

[Authorize (Utilisateurs = "me, Joe")]

qui a travaillé beaucoup. La nuit dernière, lorsque j'ai publié les dernières modifications et tenté d'afficher mon site Web, j'ai commencé à ouvrir une boîte de dialogue Authentification Windows. J'ai regardé tout mon code et je n'arrive pas à comprendre pourquoi cela changerait pour l'authentification Windows. Mon fichier web.config n'a pas changé depuis au moins 10 jours. Si je cours le code de ma boîte de dev il ne fait pas ceci ... seulement quand il est exécuté de mon hôte. Et si je supprime la ligne Autoriser de mon action de contrôleur, cela n'arrivera pas.

Comment puis-je résoudre ce problème ou comment puis-je déboguer ma solution pour voir pourquoi cela se produit?

BTW, mon web.config dit:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

Répondre

3

Ceci est très probablement faire pour les paramètres IIS pour l'authentification et des autorisations sur le dossier du site Web sur le serveur Web. Je vérifierais les deux avant tout le reste.

+0

Il s'agit d'une solution hébergée, donc serait-ce quelque part dans le panneau de contrôle basé sur le Web de mes hôtes? Pourquoi cela changerait-il et plus important encore pourquoi cela cesserait-il de fonctionner si je supprimais la ligne Autoriser de mon code? – Whozumommy

+0

Si vous prenez l'attribut Autoriser, l'accès anonyme est autorisé, donc pas d'invite d'autorisation. Je soupçonne qu'il s'est passé quelque chose pour réinitialiser les paramètres d'autorisation afin de permettre l'authentification Windows. Si ceux-ci ont été configurés pour hériter du parent et que les paramètres parents ont été modifiés, cela l'expliquerait. – tvanfosson

+0

Mais comment puis-je définir ou tester ceci sur un environnement hébergé? Le panneau de contrôle de mes hôtes (HELM) ne semble pas inclure un moyen de définir les propriétés d'un dossier. – Whozumommy

0

Je pense que vous devez définir les autorisations pour IUSER, IWAM

Utilisation de l'Explorateur Windows recherchez le dossier que vous êtes désireux d'accorder des autorisations. Faites un clic droit sur le dossier et sélectionnez "propriétés". Dans la boîte de dialogue qui s'affiche, cliquez sur l'onglet "Sécurité" en haut de la page. Vous pouvez ensuite ajouter ou modifier la sécurité de ces comptes (IUSR_machineName, IWAM_macnineName et ASPNET).

+0

Il s'agit d'une solution hébergée. Je ne peux donc pas accéder au dossier. Êtes-vous en train de dire que je devrais le faire sur ma copie locale? – Whozumommy

+0

Non, votre copie locale fonctionne déjà mais pas sur le serveur, essayez de naviguer dans le panneau de contrôle de votre hôte pour obtenir ce correctif ou en définissant l'autorisation de dossier en utilisant l'application client FTP comme FileZilla –

1

Je ne fais que tourner dans le noir, mais avez-vous un réglage <identity> dans votre web.config?

<system.web> 
    ... 
    <identity impersonate="true"/> 
    ... 
</system.web> 

Si tel est le cas, il peut être utile de supprimer cette ligne. Il peut également être utile de demander à votre fournisseur d'hébergement pourquoi l'authentification Windows est soudainement appliquée à votre site Web. Comme d'autres l'ont mentionné, certains paramètres IIS peuvent provoquer ce problème.

Questions connexes