web-dev-qa-db-fra.com

Erreur HTTP 403.14 - Interdit - MVC 4 avec IIS Express

Cela semble être une question qui a déjà été posée/répondue à plusieurs reprises. Ce n'est pas.

Environnement de développement: VS 2012 et MVC 4. J'utilise le IIS Express intégré pour exécuter l'application. 

Cette erreur ne s'est produite qu'hier. Cela a soudainement commencé à se produire et je suis coincé. C'est étrange qu'il ne se produise que dans UN SEUL scénario.

Lorsque j'essaie d'accéder à http://localhost:49962/managescholars/, il me montre l'erreur 

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

Mais utiliser http://localhost:49962/managescholars/Index fonctionne bien. D'autres méthodes d'action du même contrôleur fonctionnent également bien. comme http://localhost:49962/managescholars/create. Tous les autres contrôleurs fonctionnent aussi bien.

J'ai essayé d'ajouter ce qui suit à web.config.

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
  <handlers/>
</system.webServer>

J'ai également essayé d'exécuter la commande suivante en tant qu'administrateur

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

Mais aucun d'entre eux n'a fonctionné. 

Modifier:

J'ai modifié mes itinéraires. Ils ont l'air comme suit.

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "ManageScholarLectures",
            url: "Manage/Lectures/{userFriendlyName}",
            defaults: new { controller = MVC.ManageLectures.Name , 
                            action = MVC.ManageLectures.ActionNames.Index, 
                            userFriendlyName = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "ManageScholarEdit",
            url: "Manage/Scholars/{userFriendlyName}",
            defaults: new { controller = MVC.ManageScholars.Name, 
                            action = MVC.ManageScholars.ActionNames.Edit }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = MVC.Home.Name, 
                            action = MVC.Home.ActionNames.Index, 
                            id = UrlParameter.Optional }
        );
    }

J'utilise le modèle T4MVC.

Cela ne fonctionne toujours pas même si je laisse la route par défaut en bas et supprime les deux premières routes. Qu'est ce que j'ai mal fait?

Merci beaucoup d'avance pour votre aide.

18
Aamir

Vos itinéraires semblent bons. Cela ne devrait causer aucun problème. L'erreur ne se produit que sur http://localhost:49962/managescholars/, ce qui signifie qu'il pourrait y avoir une autre ressource portant le même nom. Pouvez-vous vous assurer que votre code ne crée pas par erreur un dossier managecholars pendant l'exécution? "

58
Yaqub Ahmad

J'ai rencontré le même problème. Résoudre est très facile.

Ce problème est dû à un conflit IIS Express lorsque vous modifiez les propriétés dans l'URL de protection dans les paramètres du projet . Il est très simple de résoudre ce problème:

1 - Recherchez le fichier "applicationhost.config" dans le répertoire ".vs\config". Ce dossier est à la racine de la solution. Vous pouvez l'ouvrir en utilisant Notepad ++

2 - Recherchez le nom de votre commande en utilisant 'find' de votre programme (Ctrl + F). Dans mon cas, le contrôle qui posait problème était celui des "bureaux".

3 - Supprimez tout noeud sur lequel vous avez placé les paramètres IIS pour une telle URL. Voir exemple ci-dessous:

    <site name="G4.Admin(1)" id="8">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
                    <virtualDirectory path="/Offices/Edit" physicalPath="C:\Projetos\PortalG4\src" />
                    <virtualDirectory path="/Offices" physicalPath="C:\Projetos\PortalG4" />
                </application>
                <application path="/Offices/Edit/2" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:6920:localhost" />
                </bindings>
            </site>

Vous devez supprimer chaque élément

<site name = "NAME_PROJECT" id = "X">

Remarque: Faites une sauvegarde du fichier avant de faire les modifications.

Câlins

3
Ivan Silva Lemos

Tout d'abord, je suppose que 

 http://localhost:49962/managescholars/

est en fait 

 http://localhost:49962/manage/scholars/

. Sinon votre problème :)

Je ne suis pas un expert des itinéraires, mais dans votre itinéraire pour Scholars, le paramètre userFriendlyName n’est pas facultatif, ce qui signifie que http://localhost:49962/manage/scholars/ ne correspond à aucune de vos règles et IIS le traitera comme une demande d’énumération du contenu du fichier. dossier.

1
tymtam

Génial !! Dans mon cas, c’est parce que j’ai configuré l’application pour qu’elle s’exécute dans une mauvaise URL, mais lorsque je suis revenu à la bonne, le look n’a pas submergé le fichier applicationhost.config.

Comme je l'ai dit plus haut, je n'ai réussi qu'à résoudre ces étapes.

1
Ivan Silva Lemos

Au cas où quelqu'un aurait le même problème, j'aurais et entrerais cette page de façon indépendante . Si le site de débogage fonctionne mais pas sur un site:

Vérifiez la modification sur global.asax Vérifiez si la configuration de la route est toujours présente ...

Je sais que c'est idiot mais perdu 6 heures après une fusion de git ...

0
Pomme De Terre

Je sais que la réponse à la question initiale a été trouvée, mais que les éléments ci-dessous ont bien fonctionné dans mon cas ... J'ai eu exactement le même problème avec VS2013 avec IIS Express. Dans mon cas, la visite/la connexion n’obtenait pas l’action Index dans LoginController. Il n'y avait pas de dossier physique lorsque j'ai vérifié, mais après avoir creusé davantage, j'ai constaté qu'un répertoire virtuel avait été créé sur IIS Express pour/chemin de connexion, ce qui était à l'origine de cette erreur. J'ai supprimé le répertoire virtuel de config applicationhost (Documents\IISExpress\config) pour résoudre le problème.

0
Anand

Vous devriez aller le nom d'utilisateur/et l'activer s'il n'est pas activé.

0
Sneaky Anand

Dans mon cas, après avoir utilisé la réponse @ Fl4v, je cherche directoryBrowse attribut dans le fichier applicationhost.config dans {mon répertoire de solution} .vs\config et la valeur était false. Modifié à true, redémarrez iis et cela fonctionne finalement. 

0
Steferson

Dans mon cas, avec Visual Studio 2015, j'ai résolu le problème en procédant comme suit:

  • Arrêtez IIS Express
  • Fermer le studio visuel
  • Supprimez le fichier applicationhost.config dans {mon répertoire de solutions} .vs\config
  • Supprimer le répertoire Documents\IISExpress\config
  • Démarrer VS, F5 et profiter :)
0
Fl4v