IIS 7.5 demande un nom d'utilisateur et un mot de passe
notre application est configurée pour utiliser L'authentification des formulaires, et sur la plupart des machines, elle fonctionne très bien. Cependant, j'ai un problème avec l'environnement de développement sur l'un de nos stations de travail de développeur. Quand je vais à L'une des URLs de l'application, comme ceci:
IIS me demande un mot de passe, comme ceci:
(Le nom iweb.local
est mis en place dans le fichier hosts pointant vers 127.0.0.1. Il s'agit essentiellement d'un alias pour localhost. Nous configurons le site IIS pour qu'il utilise un en-tête host afin de pouvoir éventuellement prendre en charge plus d'une application dans le futur.)
on ne me demande pas de mot de passe si je vais à la plupart des autres URLs de l'application, comme http://iweb.local/. Et je ne suis pas invité pour un mot de passe n'importe où en utilisant la même base de code exacte sur n'importe quelle autre machine de développeur. C'est seulement cette machine qui est avoir le problème. Cela m'amène à être raisonnablement confiant que ce n'est pas un problème avec le codage.
Choses que j'ai essayé:
- test avec un navigateur Web différent. Sur la machine présente le problème, le problème arrive n'importe quel navigateur que j'utilise. J'ai le même prompt dans FireFox et IE9.
- Essais sur d'autres ordinateurs de développement. Le problème ne se pose pas sur ceux-ci. Il arrive seulement sur le seul développeur boîte.
- Copier le code de , avec les réfacteurs appropriés, et le chargement
http://iweb.local/reportstest/
. Cela fonctionne; le navigateur ne demande plus de nom d'utilisateur et de mot de passe. Cependant, changer L'URL n'est pas une option pour notre application. - vérification de la configuration d'authentification IIS. L'authentification anonyme et L'authentification des formulaires sont activées. Tout le reste est désactivé. Ceci est identique sur toutes les machines de développement, y compris celles qui fonctionnent et celui qui ne le fait pas.
- vérification du journal des événements. L'IIS n'enregistre rien dans le journal des événements.
- vérification des registres du SII. Les logs contiennent des entrées pour les requêtes réussies (comme quand j'ouvre
http://iweb.local
), mais il n'enregistre rien pour les requêtes qui invitent l'utilisateur à entrer un mot de passe. - vérification des en-têtes de demande et de réponse avec coupe-feu. Les en-têtes de requête semblent identiques pour une requête à l'une ou l'autre URL. Les en-têtes de réponse de
http://iweb.local/reports
a deux options pourWWW-Authenticate
:Negotiate
etNTLM
. À partir de là, j'ai confirmé que IIS dirige le navigateur pour demander un mot de passe. Mais je suis pas près de comprendre pourquoi. - arrêt de L'IIS, configuration du service D'édition sur le World Wide Web pour avoir un manuel de démarrage afin qu'il ne démarre pas automatiquement, et redémarrage de l'ordinateur. J'ai ensuite vérifié pour voir si
http://iweb.local
ouhttp://iweb.local/reports/
répondre aux demandes. Ni, confirmant qu'il est IIS qui est la manipulation de la demande. - arrêter L'IIS, supprimer le projet entier du disque dur du développeur, et le récupérer du contrôle source. Ma pensée ici était que ce pourrait être un problème de permission sur un des dossiers (bien que je ne comprenne pas comment cela pourrait être, étant donné qu'il s'agit d'une application MVC) et que passer par ce processus garantirait que tous les dossiers ont les bonnes permissions. Mais ça n'a rien changé.
- désinstallation complète de L'IIS, redémarrer l'ordinateur, et réinstaller IIS. Cela ne fonctionne pas non plus.
je suis à court d'idées. Je ne trouve rien sur cette boite de développeur qui ne soit pas configuré de la même façon que les autres boites de développeur.
Donc: est-ce que quelqu'un sait comment activer un niveau plus profond de journalisation ou de traçage pour comprendre pourquoi IIS demande un mot de passe? Est-ce que quelqu'un peut penser à quelque chose qui pourrait causer ceci que je n'ai pas déjà regardé pour?
Ceci est un ASP.NET application MVC 3 tournant sur IIS 7.5 dans un environnement 64 bits. reports
la partie de L'URL est configurée comme une zone MVC.
UPDATE
dans ma toile.fichier de configuration, c'est ainsi que le mode d'authentification est configuré sur la machine incriminée.
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" />
</authentication>
Il n'y a pas de <authentication>
élément dans le Web.fichier de configuration pour la zone des rapports.
2 réponses
S'il y a un dossier dans l'application nommé "Reports" et que les Services de rapports du serveur SQL sont installés sur le serveur, alors le dossier répertoire virtuel des services de rapports qui est aussi nommé "Reports" sera en conflit avec le dossier "Reports" de l'application. Pour corriger ce gestionnaire de Configuration des services de rapports ouverts (Démarrer- > Tous les programmes - > MS SQL Server - > outils de configuration - > Gestionnaire de Configuration des services de rapports) et changer le répertoire virtuel de "rapports" à tout autre nom ("TestReports") sous "Report Manager URL" dans le menu à gauche.
Cela permettra de résoudre le problème d'authentification IIS
utilisez fiddler ou les outils dev dans IE9 pour regarder la requête. Cela montrera alors ce qui dans l'en-tête est à l'origine de la pop-up. Il peut s'agir de basic auth, ou NT auth lorsque le navigateur n'est pas en mesure de répondre à la demande. Comme il est localisé sur une seule machine, check IIS est configuré pour être anonyme et vérifiez les permissions sur le fichier demandé.