ASP MVC in IIS 7 führt zu: HTTP-Fehler 403.14 - Verboten

146

Ich entwickle ein ASP MVC-Webprojekt. Jetzt habe ich eine Anforderung, die mich zwingt, auf einem IIS7 in der Mitte der Entwicklung bereitzustellen (um einige Funktionen zu überprüfen). Ich erhalte die oben genannte Fehlermeldung, wenn ich versuche, die URL der Website einzugeben. (Hinweis: Entwicklungsmaschine: Vista Home Premium, IIS7)

Was ich bis jetzt gemacht habe:

Die HOSTS-Datei wurde bearbeitet (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

Fügen Sie zwei Domains hinzu (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Erstellt einen Ordner c: \ sites \ dirOfApplication und stellt ihn in Visual Studio 8 in diesem Ordner bereit.

In IIS7 wurde eine neue Site mit dem Hostnamen domain1.com und dem oben genannten Anwendungsordner erstellt.

Die Eingabe der Adresse domain1.com im Webbrowser führt zu dem oben genannten Fehler (HTTP-Fehler 403.14 - Verboten - Der Webserver ist so konfiguriert, dass der Inhalt dieses Verzeichnisses nicht aufgelistet wird.)

Ich glaube, ich vermisse etwas, weiß aber nicht was! Es wurde versucht, die Dateien System.Web.Mvc, System.Web.Abstraction & System.Web.Routing mit demselben Ergebnis bereitzustellen. Immer wenn ich versuche, F5 zu drücken und die Anwendung auszuführen, funktioniert es einwandfrei!

savvas sopiadis
quelle
Mögliches Duplikat von ASP.NET MVC unter IIS 7.5
Fenton

Antworten:

224

Vielleicht ist es für jemanden nützlich: Nachdem ich meine App mit .NET Framework 4.5 auf MVC 4 konvertiert und das Framework mit IIS 7.0 auf meinem Server installiert habe, ist der in der Frage erwähnte "verbotene" Fehler aufgetreten. Ich habe alle oben beschriebenen Optionen ohne Erfolg ausprobiert, als ich das bemerkte

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

fehlte in meiner web.config. Nachdem dies hinzugefügt wurde, funktionierte alles. Einfach, aber leicht zu übersehen ...

BEARBEITEN:

Natürlich wird die obige Lösung funktionieren, aber es ist in der Tat eine Verschwendung von Ressourcen. Ich denke, es ist besser, das Routing-Modul hinzuzufügen, auf das Chris Herring in den Kommentaren hingewiesen hat .

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
Cyril Mestrom
quelle
2
Es stellt sich heraus, dass bei der Deinstallation eines NuGet-Pakets das runAllManagedModulesForAllRequests="true"aus meiner Web.config entfernt wurde. Vielen Dank, dass Sie dies erwähnt haben, bevor ich die ganze Nacht damit verbracht habe, dies herauszufinden.
Schmalls
3
DIES!! Arrrrgh Ich habe einen ganzen Tag damit verbracht, dies zum Laufen zu bringen, bis ich Ihre Antwort gefunden habe. Danke! Was seltsam ist, ist, dass es auf IIS auf meinem lokalen Computer gut laufen würde, aber nicht auf der Produktionsbox und beide laufen IIS7.5
Glenn Slaven
1
Das war's. Die Deinstallation von Cassette Nuget entfernt es manchmal. Vielen Dank.
Zachary Scott
8
Versuchen Sie, diese Einstellung zu vermeiden, indem Sie das Routing-Modul hinzufügen - britishdeveloper.co.uk/2010/06/…
Chris Herring
6
Ich liebe den Antwortkommentar "Vielleicht ist es für jemanden nützlich" ... lol ... Sieht so aus, als wäre es für eine TONNE von Menschen nützlich, auch für mich.
Paul
126

Beantwortet auf SO hier , Frage: 403 - Verboten zu den grundlegenden MVC 3 deploy auf iis7.5

Ausführen aspnet_regiis -i. Oft habe ich festgestellt, dass Sie dies tun müssen, damit 4.0-Apps funktionieren. Öffnen Sie eine Eingabeaufforderung als Administrator(klicken Sie mit der rechten Maustaste auf das Eingabeaufforderungssymbol und wählen Sie Als Administrator ausführen):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Stellen Sie nach der Installation und Registrierung sicher, dass Ihre Anwendung einen Anwendungspool verwendet, der auf .NET 4.0 festgelegt ist.

UPDATE: Ich habe gerade ein Problem mit diesem Befehl gefunden. Mit -i wurden alle Anwendungspools auf ASP.NET 4.0 aktualisiert.

Mit wird aspnet_regiis -irdie Version von ASP.NET installiert, es werden jedoch keine Webanwendungen auf diese Version geändert. Möglicherweise möchten Sie auch die Option -iru überprüfen.

Brettski
quelle
Hat auch für mich gearbeitet. Nach dem Ausführen des Befehls aspnet_regiis -i wurde UrlMappingModule in IIS installiert.
Manish Gupta
Nach der Installation von IIS musste ich aspnet_regiis ausführen, damit alles funktioniert, obwohl .NET 4 bereits registriert zu sein schien.
Brian
Wenn das Framework vor IIS installiert wurde, müssen Sie ja aspnet_regiis.
Brettski
2
Vergessen Sie nicht, dass es sich bei einem 64-Bit-System um "Framework64" handelt. Dh Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd
Für diese Verwendung spielt die 64- oder 32-Bit-Version von aspnet_regiis keine Rolle. Einige Sonderfälle sind hier aufgelistet: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski
34

Auch ich bin auf diesen Fehler gestoßen. Alle Konfigurationen und Berechtigungen waren korrekt. Aber ich habe vergessen, Global.asax auf den Server zu kopieren, und das hat den 403-Fehler verursacht.

Bogdan Litescu
quelle
In meinem Fall hatte ich es versehentlich mit der Maus bewegt, ohne es zu merken. Vielen Dank!
Mathias Lykkegaard Lorenzen
Ich habe gerade 2 Stunden verschwendet, weil ich das Kopieren dieser Datei übersehen hatte, nachdem ich meinen Webdokumentenordner gelöscht hatte!
Steven Sproat
10

Es ist, weil ich zu sicher bin, was du (ich) tust!

Auf meinem Computer ist IIS 7 installiert, die erforderliche ASP.NET-Komponente (Systemsteuerung-> Programme-> Ein- / Ausschalten-> ASP.NET) jedoch nicht.

Die Installation dieses Problems löste das Problem

savvas sopiadis
quelle
9

Ich hatte das gleiche Problem. Dieser Microsoft-Support-Artikel hat das Problem für mich behoben.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404-Fehler-wenn-sie-versuchen-zu-verarbeiten-erweiterungslose-URLs-auf-iis-7-und-iis-7.5

Führen Sie im Dialogfeld "Windows-Funktionen ein- oder ausschalten" der Windows-Systemsteuerung "Programme und Funktionen" die folgenden Schritte aus:

  1. Navigieren Sie zum folgenden Knoten: Internetinformationsdienste -> World Wide Web Services -> Allgemeine HTTP-Funktionen
  2. Stellen Sie sicher, dass die Option "HTTP-Fehlerumleitung" ausgewählt ist.

-oder-

  1. Navigieren Sie zum folgenden Knoten: Internetinformationsdienste -> World Wide Web Services -> Leistungsmerkmale
  2. Stellen Sie sicher, dass die Option "Statische Inhaltskomprimierung" ausgewählt ist. Nachdem Sie eine der beiden Optionen ausgewählt haben, klicken Sie auf "OK", um die Änderungen zu speichern.

Durch erneutes Aktivieren des Moduls für die HTTP-Fehlerumleitung oder des Moduls für die statische Inhaltskomprimierung wird sichergestellt, dass ASP.NET und IIS HTTP-Pipeline-Ereignisse korrekt synchronisieren. Dadurch kann das URL-Routing-Modul erweiterungslose URLs verarbeiten.

Donny V.
quelle
7

Versuchen Sie, die folgenden Einstellungen anzuwenden:

1) Geben Sie dem IIS_IUSRSBenutzer die erforderliche Berechtigung für IIS Server(Klicken Sie mit der rechten Maustaste auf die Website und dann auf Berechtigungen bearbeiten> Sicherheit).

Geben Sie hier die Bildbeschreibung ein

2) Wenn Sie verwenden .NET Framework 4, stellen Sie sicher, dass sich die .NET Framework-Version v4.0auf der von Application PoolIhrer Website verwendeten Version befindet .

Geben Sie hier die Bildbeschreibung ein

3) Öffnen Sie die Commanp-Eingabeaufforderung als administratorund führen Sie den iisresetBefehl aus, um den Computer neu zu starten IIS Server.

Hoffe das hilft...

Murat Yıldız
quelle
Tipp: Wenn Sie danach immer noch die Berechtigungsfehler erhalten, müssen Sie möglicherweise einen iisreset im cmd als Admin durchführen, um Ihre Site in IIS zum Laufen zu bringen.
Cory Koch
6

In meinem Fall hat mir folgender Ansatz geholfen:

  1. aspnet_regiis -i im Windows\Microsoft.Net\Framework

  2. Hinzufügen von Modulen zu system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
Stefan Michev
quelle
Ich vermute, Sie haben den Rahmen weggelassen. Öffnen Sie jedoch cmd als Administrator und führen Sie aspnet_regiis -i unter Windows \ Microsoft.Net \ Framework \ v4.0.30319
DeadlyChambers
5

Wenn Sie x64 ausführen, überprüfen Sie außerdem, ob Sie 32-Bit-Anwendungen in den Einstellungen des App-Pools aktiviert haben

Geben Sie hier die Bildbeschreibung ein

David Christiansen
quelle
3

Beim Deaktivieren von "Vorkompilieren während der Veröffentlichung" wurde der Fehler 403.14 für einen Webdienst angezeigt , den ich gerade in VS2015 geschrieben hatte. Daher habe ich ihn in VS2013 neu geschrieben und den gleichen Fehler erhalten. In beiden Fällen hatte ich "Precompile While Publishing" aktiviert. Ich habe es deaktiviert, aber immer noch den Fehler erhalten. In meinem Fall hatte ich auch " Alle vorhandenen Dateien vor der Veröffentlichung löschen", löschte jedoch nicht alles aus dem Zielverzeichnis auf dem Server, bevor ich die neu veröffentlichten Dateien dorthin kopierte. Wenn Sie dies nicht tun, bleibt eine " PrecompiledApp.config " -Datei zurück, die das Problem verursacht. Nachdem ich diese Datei gelöscht hatte, war ich sowohl in der VS2013- als auch in der VS2015-Version meines Webdienstes golden.

JTTx
quelle
2

Ich habe hier alles versucht; Nichts hat geklappt. Das Problem war in meiner Web.configDatei, irgendwie wurde die abhängige Assembly-Bindung von Minimum 1auf Minimum geändert 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
codeMonkey
quelle
1

Bitte beachten Sie, dass manchmal Managed pipeline modeein Fehler diesen Fehler verursacht. Es stehen zwei Optionen zur Auswahl integratedund classic.

Joe.wang
quelle
1

So beheben Sie "HTTP-Fehler 403.14 - Verboten Der Webserver ist so konfiguriert, dass der Inhalt dieses Verzeichnisses nicht aufgelistet wird"

Dieser Fehler tritt auf, wenn MVC 2+ auf IIS 7+ gehostet wird. Dies liegt daran, dass ASP.NET 4 nicht in IIS registriert wurde. In meinem Fall habe ich ein MVC 3-Projekt erstellt und auf IIS 7.5 gehostet.

Stellen Sie zur Behebung sicher, dass MVC 2 oder höher und .Net Framework 4.0 installiert sind, führen Sie dann eine Eingabeaufforderung als Administrator aus und geben Sie die folgende Zeile ein:

32 Bit (x86)

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

64 Bit (x64)

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

Vishal Sen.
quelle
1

Überprüfen Sie Ihre Global.asax- Datei. In meinem Fall war es leer.

Oyenigun
quelle
1

Wenn die Top-Antworten nicht funktionieren, suchen Sie nach einer Konfiguration PrecompiledApp.configim Hosting-Verzeichnis und löschen Sie sie, falls vorhanden. Diese Datei verhindert, dass IISExpress und LocalIIS ordnungsgemäß funktionieren. (Und ich denke, das ist ein Fehler) Der Inhalt der Datei in meinem Fall war:

<precompiledApp version="2" updatable="true"/>

Und ich bin zu 100% sicher, dass dies das Problem mit meinem Fall war, da ich alles in 2 Stunden ausprobiert und viele Male mit dieser Konfiguration getestet habe.

Eine weitere Sache: Sie können nicht aspnet_regiisin neueren Versionen von Windows und IIS verwenden, also versuchen Sie es

dism /online /enable-feature /featurename:IIS-ASPNET45 /all
sotn
quelle
1

Systemsteuerung> Windows-Funktionen ein- oder ausschalten> Webserver> Anwendungsentwicklung

Überprüfen Sie ASP.NET

Andres Kalev Rebane
quelle
0

Ich habe diesen Fehler auch trotz aller bereitgestellten Lösungen aus folgenden Gründen festgestellt:

  • Fehlende DLLs
  • Die Datenbankverbindungszeichenfolge verweist auf einen Server, auf den nicht zugegriffen werden kann.
eulerfx
quelle
0

In meinem Fall fehlten web.config und alle Dateien außer dem Ordner / bin (nicht irgendwie kopiert).
Dumm, aber das war das Letzte, was ich überprüft habe.

eitanpo
quelle
0

Ich hatte kürzlich diesen Fehler und stellte fest, dass das Problem dadurch verursacht wurde, dass die Funktion "HTTP-Umleitung" auf meinem Windows Server nicht aktiviert war. Dieser Blog-Beitrag hat mir bei der Fehlerbehebung geholfen, die Antwort zu finden (obwohl es sich um ältere Windows Server-Versionen handelt): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable -not-working-with-iis.aspx für neuere Server gehen Sie zur Computerverwaltung, scrollen Sie nach unten zur Webserverrolle und klicken Sie aufadd role services

Seph
quelle
0

Mit dem ASP.NET-Projekt mit C # 4.5 habe ich dieses Problem durch die Installation der ASP.NET-Erweiterung im Web Platform Installer gelöst

Kamil Gareev
quelle
0

Auch noch etwas kann möglich sein

Installieren Sie .net Framework 4.0 manuell

Diese Lösung ist für IIS7 in Fenster 7

Öffnen Sie cmd mit Administratorrechten

Wechseln Sie in das Verzeichnis "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319".

Geben Sie aspnet_regiis.exe -i ein

Sie haben Ihren Inet-Manager durch Eingabe des Ausführungsbefehls "inetmgr" erreicht.

Aktualisieren Sie Ihren IIS7

Laden Sie die Site neu.

Iftikhar Ali Ansari
quelle
0

Ich weiß, dass Sie dieses Problem auf einem internen Host hatten, aber ich hatte zuvor ein solches Problem auf einem externen Host und in meinem Fall hatte es eine eigene Lösung, vielleicht könnte es jemandem Zeit sparen:

Tatsächlich wurde meine Website aus einem Grund gestoppt, der mir derzeit nicht bekannt ist. Um herauszufinden, ob Sie das gleiche Problem haben, gehen Sie auf der WebsitePanel-Hauptseite zu Web -> Websites und wählen Sie den Domainnamen Ihrer Website aus der Liste aus Überprüfen Sie anschließend auf der rechten Seite der gerade geöffneten Seite, ob das Wort STARTED angezeigt wird. Wenn das Wort STOPPED angezeigt wird, starten Sie es erneut. Das ist alles.

Mohammad Musavi
quelle
0

Ich weiß, dass dies ein altes Thema ist, aber Sie können diesen Fehler auch (beim Debuggen) erhalten, wenn Sie einen Ordner haben, der mit einer Route in einem Controller identisch ist.

Wenn Sie beispielsweise einen UserController mit einer Route namens / User haben und in Ihrer Lösung AUCH einen Ordner mit dem Namen "User" haben, versucht IISExpress, den Ordner zu durchsuchen, anstatt Ihre Ansicht anzuzeigen.

Barmherzige Giraffe
quelle
0

Nachdem ich alle hier vorgeschlagenen Lösungen ausprobiert hatte, fand ich eine weitere mögliche Lösung: URLScan

Auf dem IIS war WebDAV deaktiviert, selbst in der web.config meiner Anwendung wurden der Handler und das Modul von WebDAV entfernt. PUTs gaben immer noch einen 403 - Forbidden zurück ohne Protokolleinträge in den IIS-Protokollen zurück. (GET / POST hat gut funktioniert).

Es stellte sich heraus, dass auf dem IIS ein aktiver ISAPI-Filter (der URLScan) aktiviert war, der alle PUTs verhinderte. Nach dem Entfernen von URLScan hat es bei mir funktioniert.

Felix Beifuß
quelle
0

Meine Situation war völlig anders als diese und die Fehlermeldung 403: Verboten war ein bisschen wie ein roter Hering.

Wenn Ihre Application_Start () -Funktion im Global.asax-Modul versucht, auf die web.config zuzugreifen, und ein Eintrag, auf den verwiesen wird, nicht vorhanden ist, drosselt IIS und gibt (aus irgendeinem Grund) die Fehlermeldung 403: Forbidden aus.

Stellen Sie sicher, dass in der Datei web.config kein Eintrag fehlt, auf den in Ihrem Global.asax-Modul zugegriffen werden soll.

Jason Marsell
quelle
0

Falls Sie wie ich sind und eine Anwendung mit NHibernate haben und die obigen Antworten Ihr Problem nicht gelöst haben.

Sie sollten sich die Verbindungszeichenfolge in Ihrer Anwendung ansehen. möglicherweise in der webconfig-Datei, um sicherzustellen, dass sie korrekt ist.

wale A.
quelle
-1

Ich habe Identity Impersonate verwendet:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

Wenn Sie auf den Server hochschieben, müssen Sie dem Benutzernamen Zugriff auf den Temporary ASP.NETOrdner "Dateien" gewähren, damit er ordnungsgemäß lesen / schreiben / ausführen kann:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Ersetzen Sie natürlich "Frameworkversion" und "Aspversion" durch die von Ihnen verwendeten Versionen.

Dalemac
quelle
-1

Schritt 1: Wählen Sie die Site aus, für die der HTTP-Fehler in IIS erzeugt wird, und klicken Sie dann auf Verzeichnis durchsuchen (siehe Abbildung unten):

Schritt 2: Klicken Sie im Fenster zum Durchsuchen von Verzeichnissen in IIS auf der rechten Seite auf In Aktionen aktivieren, wie in der folgenden Abbildung dargestellt:

Jetzt ist das Durchsuchen von Verzeichnissen für Ihre asp.net-Website aktiviert. Starten Sie einfach die Webanwendung in IIS neu und durchsuchen Sie die Website in Ihrem Browser, um das Ergebnis anzuzeigen.

user3589806
quelle
-1

Ich verwende: Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

Wenn keines der oben genannten Verfahren funktioniert hat, versuchen Sie Folgendes:

Deaktivieren Sie "Vorkompilieren während der Veröffentlichung"

Das hat mich ein paar Tage lang in den Hintern getreten.

D. Kermott
quelle
@ d-kermott, könnte mein [find] [( stackoverflow.com/a/31319136/912481 ) auch für dich nützlich sein?
Kamil Gareev
-1

Ich hatte dieses Problem, aber es konnte leicht behoben werden, indem Sie zum IIS-Manager (Internet Information Services) gingen, auf Verzeichnis durchsuchen doppelklicken und auf Aktivieren klicken.

In meinem Fall konnte ich direkt auf Dateien zugreifen, aber nicht auf Ordner.

Scott Izu
quelle
-1

Ich hatte die IP-Adresse um eine Ziffer falsch eingegeben, was bedeutete, dass sie an einen meiner anderen Server ging. Sehr verwirrend, da Sie eine .NET-Fehlerseite erhalten, aber vom falschen Computer!

NickG
quelle