webentwicklung-frage-antwort-db.com.de

HTTP-Fehler 403.14 - Verboten - MVC 4 mit IIS ausdrücken

Dies scheint eine Frage zu sein, die schon oft gestellt/beantwortet wurde. Es ist nicht.

Entwicklungsumgebung: VS 2012 und MVC 4. Ich verwende den integrierten IIS Express, um die App auszuführen. 

Dieser Fehler trat erst gestern auf. Es begann plötzlich aufzutreten und ich bin festgefahren. Es ist seltsam, dass es nur in EINEM Szenario vorkommt.

Wenn ich versuche, auf http://localhost:49962/managescholars/ zuzugreifen, wird mir der Fehler angezeigt 

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

Aber http://localhost:49962/managescholars/Index funktioniert gut. Andere Aktionsmethoden desselben Controllers funktionieren ebenfalls gut. wie http://localhost:49962/managescholars/create. Alle anderen Controller funktionieren ebenfalls gut.

Ich habe versucht, Folgendes zu web.config hinzuzufügen.

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

Ich habe auch versucht, den folgenden Befehl als Administrator auszuführen

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

Aber keiner von ihnen hat gearbeitet. 

Bearbeiten:

Ich habe meine Routen geändert. Sie sehen wie folgt aus.

    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 }
        );
    }

Ich verwende T4MVC template.

Es funktioniert immer noch nicht, auch wenn ich die Standardroute unten belasse und die ersten beiden Routen entferne. Was habe ich falsch gemacht?

Vielen Dank im Voraus für Ihre Hilfe.

18
Aamir

Ihre Routen scheinen gut zu sein. Dies sollte kein Problem verursachen. Der Fehler tritt nur bei http://localhost:49962/managescholars/ auf, was bedeutet, dass möglicherweise eine andere Ressource mit demselben Namen vorhanden ist. Können Sie sicherstellen, dass Ihr Code während der Ausführung nicht versehentlich einen Ordner managescholars erstellt

58
Yaqub Ahmad

Ich bin auf das gleiche Problem gestoßen. Zu lösen ist sehr einfach.

Dieses Problem tritt aufgrund eines IIS -Expressenkonflikts auf, wenn Sie die Eigenschaften in der Protect-URL in den Projekteinstellungen bearbeiten.

1 - Suchen Sie im Verzeichnis ".vs\config" nach der Datei "applicationhost.config". Dieser Ordner befindet sich im Stammverzeichnis der Lösung. Sie können es mit Notepad ++ öffnen

2 - Suchen Sie mit 'find' Ihres Programms nach dem Namen Ihres Steuerelements (Strg + F). In meinem Fall waren die "Büros" die Kontrolle, die das Problem verursachte.

3 - Löschen Sie jeden Knoten, an dem Sie die IIS -Einstellungen für eine solche URL vornehmen. Siehe Beispiel unten:

    <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>

Sie sollten jedes Element löschen

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

Hinweis: Erstellen Sie eine Sicherungskopie der Datei, bevor Sie die Änderungen vornehmen.

Umarmungen

3

Erstens gehe ich davon aus 

 http://localhost:49962/managescholars/

ist in der Tat 

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

. Wenn nicht, gibt es dein Problem :)

Ich bin kein Experte für Routen, aber in Ihrer Route für Scholars ist der Parameter userFriendlyName nicht optional. Dies bedeutet, dass http://localhost:49962/manage/scholars/ mit keiner Ihrer Regeln übereinstimmt und IIS eine Aufforderung zur Auflistung des Inhalts der Route behandelt Mappe.

1
tymtam

Großartig !! ... In meinem Fall lag es daran, dass ich die Anwendung so konfiguriert hatte, dass sie in einer falschen URL ausgeführt wurde, aber als ich zur korrekten URL zurückkehrte, überwältigte der Look die applicationhost.config nicht.

Wie ich oben sagte, habe ich nur diese Schritte gelöst.

1

Für den Fall, dass jemand dasselbe Problem hat, habe ich diese Seite betreten und betrete diese Seite ...

Überprüfen Sie die Änderung in global.asax Überprüfen Sie, ob die Routenkonfiguration noch vorhanden ist ...

Ich weiß, dass es dumm ist, aber 6 Stunden nach einer Git-Verschmelzung verloren hat ...

0
Pomme De Terre

Ich weiß, dass die ursprüngliche Frage beantwortet wurde, aber unten in meinem Fall gearbeitet hat . Ich habe genau das gleiche Problem auf VS2013 mit IIS Express erhalten. In meinem Fall erhielt der Login/Login keine Index-Aktion in LoginController. Bei der Überprüfung gab es keinen physischen Ordner, aber nach mehr Durchsuchen fand ich ein virtuelles Verzeichnis unter IIS Express für/Login-Pfad, der dies verursacht hat. Ich habe das virtuelle Verzeichnis von applicationhost config (Documents\IISExpress\config) gelöscht, um das Problem zu beheben.

0
Anand

Du solltest den Benutzernamen/aktivieren und aktivieren, falls nicht aktiviert.

0
Sneaky Anand

In meinem Fall suche ich nach der Verwendung von @ Fl4v answer nach directoryBrowse attribute in der Datei applicationhost.config in {Mein Lösungsverzeichnis} .vs\config, und es war falsch. Wurde auf true geändert, starte iis neu und jetzt funktioniert es endlich. 

0
Steferson

In meinem Fall habe ich mit Visual Studio 2015 das Problem mit den folgenden Schritten gelöst:

  • Stop IIS Express
  • Schließen Sie Visual Studio
  • Löschen Sie die Datei applicationhost.config in {mein Lösungsverzeichnis} .vs\config
  • Löschen Sie das Verzeichnis Documents\IISExpress\config
  • VS, F5 starten und genießen :)
0
Fl4v