IIS Express donne une erreur d'accès refusé lors du débogage d'ASP.NET MVC

102

J'ai créé un projet ASP.NET MVC 3 et j'utilise IIS Express comme serveur Web lors du développement. Lorsque j'essaye de déboguer, j'obtiens le message d'erreur ci-dessous.

Comment cela peut-il être résolu?

Erreur serveur dans l'application '/'

L'accès est refusé. Description: une erreur s'est produite lors de l'accès aux ressources requises pour traiter cette demande. Le serveur n'est peut-être pas configuré pour accéder à l'URL demandée.

Message d'erreur 401.2: Non autorisé: la connexion a échoué en raison de la configuration du serveur. Vérifiez que vous êtes autorisé à afficher ce répertoire ou cette page en fonction des informations d'identification que vous avez fournies et des méthodes d'authentification activées sur le serveur Web. Contactez l'administrateur du serveur Web pour une assistance supplémentaire.

Kris-I
la source
3
exécutez-vous IISExpress sans privilèges administratifs?
chandmk le
2
Donc, après m'être cogné la tête à ce sujet pendant un moment, j'ai finalement réalisé que c'était parce que VS n'avait pas défini de page par défaut et apparemment IISExpress.exe ne donne pas de listes de dossiers pour rendre cela évident.
Mark Allen

Réponses:

113

Si vous utilisez Visual Studio, vous pouvez également cliquer avec le bouton gauche sur le projet dans l' Explorateur de solutions et modifier la propriété d' authentification Windows sur Activé dans la fenêtre Propriétés .

Jason
la source
2
Cela n'est pas spécifique à Visual Studio 2012, cela peut être fait au moins sur Visual Studio 2010 également.
Loïc Lopes
5
A travaillé pour moi dans VS 2013.
kaybee99
2
Vous devez également désactiver l'authentification anonyme.
baie vitrée
1
Dans l'explorateur de solutions, cliquez sur le nom du projet sous le nœud de la solution, puis passez à la fenêtre Propriétés, vous pouvez y voir la propriété Authentification Windows, définissez-la sur Activé
sairfan
1
Je ne vois ce paramètre nulle part dans la fenêtre des propriétés. J'utilise VS 2015.
Mark Bonafe
99

La cause de ce problème était que IIS Express n'autorisait pas l'authentification Windows. Cela peut être activé en définissant

<windowsAuthentication enabled="true">

dans le fichier applicationhost.config situé dans C: \ Users [nom d'utilisateur] \ Documents \ IISExpress \ config.

Fourmi Swift
la source
19
Visual Studio 2010 et 2012 peuvent ajouter ce paramètre pour vous, par projet, afin que le paramètre global ne soit pas modifié par rapport à sa valeur par défaut, voir stackoverflow.com/a/7168308/23566
Robert Claypool
J'essaie ce paramètre, car j'obtiens également cette erreur dans VS 2013 sporiadiquement, voyons si cela aide, je vous le ferai savoir.
Matt
2
Mieux vaut si vous utilisez% userprofile% \ documents \ iisexpress \ config \ applicationhost.config. Le mien était le D: (merci Dan! Danesparza.net/2014/09/… )
Jeramy Rutley
C'est la seule solution qui a fonctionné pour moi, merci beaucoup!
Mohammad Anini
J'ai essayé cela dans VS 2017 et cela n'a pas fonctionné. La solution publiée par Jason a fonctionné.
myroslav
73

J'ai utilisé la réponse de Jason, mais je voulais clarifier comment accéder aux propriétés.

  1. Sélectionnez un projet dans l'Explorateur de solutions

entrez la description de l'image ici

  1. F4 pour accéder aux propriétés (différentes des propriétés du clic droit)
  2. Changer l' authentification Windows sur Activé

entrez la description de l'image ici

Tony L.
la source
3
Un grand merci d'avoir précisé cela et d'avoir spécifié que ce sont les propriétés F4 qui doivent être modifiées.
PeterDNCO
1
Je vous remercie! J'ai également dû définir «Authentification anonyme» sur «Activé».
Mahesh
1
Un grand merci aussi!
FunMatters
1
Vous êtes belle.
kosherjellyfish
1
J'utilise VS 2015, cela n'existe pas!
Mark Bonafe du
18

Hébergement sur IIS Express: 1. Cliquez sur votre projet dans l'Explorateur de solutions pour sélectionner le projet. 2. Si le volet Propriétés n'est pas ouvert, ouvrez-le (F4). 3. Dans le volet Propriétés de votre projet: a) Définissez «Authentification anonyme» sur «Désactivée». b) Réglez «Authentification Windows» sur «Activé».

Daniel
la source
12

Dans mon cas, j'ai dû ouvrir le fichier:

C:\...\Documents\IISExpress\config\applicationhost.config

J'avais ceci dans le fichier:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Je viens de retirer la User=""pièce. Je ne sais vraiment pas comment cette chose est arrivée là ... :)

Remarque: assurez-vous d'avoir quelque chose comme ça à la fin de applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

Vous pouvez également jeter un oeil ici: https://stackoverflow.com/a/10041779/114029

Je peux maintenant accéder à la page de connexion comme prévu.

Leniel Maccaferri
la source
1
J'ai suivi vos pas, mais cela ne fonctionne toujours pas pour moi. S'il est ouvert à partir de vs2010, cela fonctionne bien, quel est le problème dans vs 2013
GANI
@ user1016740 Je ne suis pas sûr car il existe une pléthore de possibilités / chemins à suivre pour essayer de résoudre ce problème. Les étapes que j'ai décrites ici l'ont résolu dans mon environnement qui, je pense, est différent du vôtre.
Leniel Maccaferri
8

Dans mon cas, une précédente exécution de mon application à partir de VS a réservé l'URL. J'ai pu voir cela en exécutant dans une console:

netsh http show urlacl

pour supprimer cette réservation, j'ai exécuté ceci dans une console élevée :

netsh http delete urlacl http://127.0.0.1:10002/

J'ai trouvé ces étapes ici résolu mon problème.

J'utilise VS2013

BillDarcy
la source
C'est très pratique si vous avez déjà édité votre applicationhost.config pour exécuter un site sur plusieurs ports à la fois. La suppression des entrées du .config ne supprime aucune réservation dans netsh. Merci mec.
Dusda
5

J'ai dû exécuter Visual Studio Administrative Modepour me débarrasser de cette erreur.

Serj Sagan
la source
3

J'ai eu aussi le même problème et j'ai finalement pu le surmonter.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

J'ai choisi un autre numéro de port et tout s'est bien passé!

grenouille
la source
1

Aucun de ces éléments n'avait fonctionné pour moi. Cela fonctionnait pour moi avant aujourd'hui. J'ai alors réalisé que j'avais travaillé à la création d'une connexion hébergée sur mon ordinateur portable et que j'avais partagé une connexion Internet avec ma connexion réseau sans fil.

Pour résoudre mon problème:

Allez dans Panneau de configuration> Réseau et Internet> Connexions réseau

Cliquez avec le bouton droit sur n'importe quelle connexion réseau sans fil secondaire que vous pouvez avoir (la mienne s'appelait Connexion réseau sans fil 2) et cliquez sur «Propriétés».

Accédez à l'onglet "Partage" en haut.

Décochez la case "Autoriser les autres utilisateurs du réseau à se connecter via la connexion Internet de cet ordinateur".

Appuyez sur OK> puis sur Appliquer.

J'espère que cela t'aides!

Ryan C
la source
1

J'ai ouvert mon fichier web.config, et j'ai trouvé et supprimé cette section:

<authorization>
  <deny users="?" />
</authorization>

et mon site est apparu, mais il y a des problèmes avec l'authentification ..

kfn
la source
D'accord, cela a aidé à résoudre le problème, mais j'ai maintenant d'autres problèmes que je dois résoudre.
Jamshaid Kamran
0

Je viens de résoudre ce problème exact dans IIS EXPRESS en modifiant l'hôte de l'application .config dans la section d'emplacement spécifique ci-dessous. J'avais défini l'authentification Windows dans Visual Studio 2012, mais lorsque je suis entré dans le XML, cela ressemblait à ceci.

la balise d'authentification Windows devait être ajoutée ci-dessous, comme indiqué.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>
user3507561
la source
0

J'ai eu du mal avec ce problème en essayant de créer une application simple pour SharePoint à l'aide du fournisseur hébergé.

Après avoir parcouru le fichier applicationhost.config, dans la section, basicAuthentication a été défini sur false. Je l'ai changé en vrai pour dépasser le 401.2 dans mon scénario. Il existe de nombreux autres liens expliquant comment trouver le fichier applicationhost.config pour IIS Express.

kfrosty
la source
0

Je n'ai vu cette réponse «complète» nulle part; Je viens de voir celui sur la modification des numéros de port après avoir publié ceci, alors meh.

Assurez-vous que dans les propriétés de votre projet dans Visual Studio, cette URL de projet n'est pas affectée à la même URL ou au même port que celui utilisé dans IIS pour les liaisons de site.

Je cherche le «pourquoi» pour cela, mais mon hypothèse est que IIS et IIS express de Visual Studio utilisent le même répertoire lors de la création de répertoires virtuels et Visual Studio ne peut créer que de nouveaux répertoires virtuels et ne peut pas modifier tout ce qu'IIS a créé lorsqu'il applique ses liaisons au site.

n'hésitez pas à me corriger sur le pourquoi.

utilisateur1040975
la source
0

Notre page d'erreur était derrière la page de connexion, mais la page de connexion avait une erreur dans l'un des contrôles, ce qui crée une boucle infinie.

Nous avons supprimé tous les contrôles de la page incriminée et les avons rajoutés un par un jusqu'à ce que le contrôle correct soit localisé et corrigé.

Atron Seige
la source
0

Dans mon cas (application ASP.NET MVC 4), le Global.asaxfichier manquait. Il apparaissait dans l'explorateur de solutions avec un point d'exclamation. Je l'ai remplacé et l'erreur a disparu.

Moïse Machua
la source