it-swarm.com.de

ASP MVC in IIS 7 Ergebnisse in: HTTP-Fehler 403.14 - Verboten

Ich entwickle ein ASP MVC-Webprojekt. Jetzt habe ich eine Anforderung, die mich dazu zwingt, mich in einem Entwicklungsbereich von IIS7 zu installieren (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 Domänen hinzu (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Es wurde ein Ordner c:\websites\dirOfApplication erstellt und in Visual Studio 8 in diesem Ordner bereitgestellt.

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

Wenn Sie die Adresse domain1.com in den Webbrowser eingeben, wird der obige Fehler angezeigt (HTTP-Fehler 403.14 - Verboten - Der Webserver ist so konfiguriert, dass er den Inhalt dieses Verzeichnisses nicht auflistet.)

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!

142
savvas sopiadis

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

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

fehlte in meiner web.config ..__ Nach dem Hinzufügen funktionierte alles. Einfach, aber leicht zu übersehen ...

EDIT:

Natürlich funktioniert die obige Lösung, aber es ist tatsächlich eine Verschwendung von Ressourcen. Ich denke, es ist besser, das Routing-Modul hinzuzufügen, wie in Chris Herring in den Kommentaren angegeben.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
219
Cyril Mestrom

Beantwortet am SO hier , Frage: 403 - Verbot für grundlegende MVC 3-Bereitstellung auf iis7.5

Führen Sie aspnet_regiis -i aus. Oft habe ich festgestellt, dass Sie das tun müssen, um 4.0-Apps zum Laufen zu bringen. Ö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 eingestellt ist.

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

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

122
Brettski

Auch ich bin auf diesen Fehler gestoßen. Alle Konfigurationen und Berechtigungen waren korrekt .. __ Ich habe jedoch vergessen, Global.asax auf den Server zu kopieren, und deshalb gab es den 403-Fehler.

30
Bogdan Litescu

Es liegt daran, dass Sie zu sicher sind, was Sie (ich) tun!

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

Durch die Installation dieses Problems wurde das Problem gelöst

10
savvas sopiadis

Versuchen Sie, die folgenden Einstellungen anzuwenden:

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

 enter image description here

2) Wenn Sie .NET Framework 4 verwenden, stellen Sie sicher, dass die .NET Framework-Version v4.0 im von Ihrer Website verwendeten Application Pool angegeben ist. 

 enter image description here

Hoffe das hilft...

7
Murat Yıldız

Ich hatte das gleiche Problem. Dieser Microsoft-Supportartikel hat es 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-errors-when-they-try-to-process-extensionless-urls-on-iis-7-and-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 -> WWW-Dienste -> Allgemeine HTTP-Funktionen
  2. Stellen Sie sicher, dass die Option "HTTP-Fehlerumleitung" ausgewählt ist. 

-oder- 

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

Durch das erneute Aktivieren des Moduls HTTP-Fehlerumleitung oder des Static Content Compression-Moduls wird sichergestellt, dass ASP.NET und IIS HTTP-Pipeline-Ereignisse ordnungsgemäß synchronisieren. Dadurch kann das URL-Routingmodul URLs ohne Erweiterungen verarbeiten.

7
Donny V.

In meinem Fall hat mir folgender Ansatz geholfen:

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

  2. Module zu system.webServer hinzufügen

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
    
7
Stefan Michev

Bitte überprüfen Sie auch, ob Sie x64 ausführen, ob Sie 32-Bit-Anwendungen in den App-Pool-Einstellungen aktiviert haben

enter image description here

6

Beim Deaktivieren Sie "Precompile While Publishing" - Ich habe die Fehlermeldung 403.14 in einem Webdienst erhalten, den ich gerade in VS2015 geschrieben habe. Ich habe ihn in VS2013 neu geschrieben und erhielt dieselbe Fehlermeldung. In beiden Fällen hatte ich "Precompile While Publishing" eingeschaltet. Ich deaktivierte es, bekam aber immer noch den Fehler. In meinem Fall hatte ich auch " Alle vorhandenen Dateien vor dem Publizieren löschen ", löschte jedoch nicht alles aus dem Zielverzeichnis auf dem Server, bevor die dort veröffentlichten neuen Dateien kopiert wurden. Wenn Sie das 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 Webservices goldrichtig.

4
JTTx

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

<!-- 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" />
2
codeMonkey

Fehlerbehebung „HTTP-Fehler 403.14 - Verboten Der Webserver ist so konfiguriert, dass er den Inhalt dieses Verzeichnisses nicht auflistet“

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

Um dies zu beheben, vergewissern Sie sich, 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:

32bit (x86)

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

64bit (x64)

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

2
Vishal sen

Wenn die ersten Antworten nicht funktionieren, suchen Sie im Hosting-Verzeichnis nach einer Konfiguration mit dem Namen PrecompiledApp.config 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% überzeugt, 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 aspnet_regiis nicht in neueren Versionen von Windows und IIS verwenden, also versuchen Sie es

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

Bitte beachten Sie, dass manchmal der falsche Code Managed pipeline mode diesen Fehler verursacht. Es gibt zwei Möglichkeiten, integrated und classic auszuwählen. 

2
Joe.wang

Ich bin auch aus allen folgenden Gründen mit dem gleichen Fehler konfrontiert:

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

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

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

1
MercifulGiraffe

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

1
oyenigun

Es kann auch noch ein weiteres möglich sein

installieren Sie .net Framework 4.0 manuell

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

open Cmd mit Administrationsvorgaben

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

geben Sie aspnet_regiis.exe -i ein

zu Ihrem inet-Manager gelangt, indem Sie den Befehl "inetmgr" eingeben 

aktualisieren Sie Ihren IIS7

laden Sie die Site neu. 

0

Nachdem ich jede hier vorgeschlagene Lösung ausprobiert hatte, fand ich eine andere mögliche Lösung: URLScan

Bei IIS war WebDAV deaktiviert, selbst in der web.config meiner Anwendung wurde der Handler und das Modul von WebDAV entfernt. PUTs lieferten weiterhin ein 403 - Forbidden ohne Protokolleinträge in den Protokollen IIS. (GET/POST hat gut funktioniert).

Es stellte sich heraus, dass bei IIS ein aktiver ISAPI-Filter (der URLScan) aktiviert war, der alle PUTs verhinderte. Nachdem ich URLScan entfernt hatte, funktionierte es für mich.

0
Felix Beifuß

Mit dem ASP.NET-Projekt mit C # 4.5 habe ich dieses Problem gelöst, indem Sie install ASP.NET-Erweiterung im Web Platform Installer installieren

0
Gareev Kamil

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 wurde. Dieser Blogbeitrag half mir bei der Fehlerbehebung, um die Antwort zu finden (trotz älterer Windows Server-Versionen): 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. Blättern Sie dann zur Rolle des Webservers und klicken Sie auf add role services.

0
Seph

Ich hatte dieses Problem, das jedoch leicht behoben werden konnte, indem der Internetinformationsdienste-Manager (IIS) aufgerufen wurde. Doppelklicken Sie auf Verzeichnis durchsuchen und klicken Sie auf Aktivieren.

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

0
Scott Izu

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

In der Tat wurde meine Website aus irgendeinem Grund angehalten, den ich derzeit nicht kenne. Um herauszufinden, ob Sie das gleiche Problem haben, gehen Sie auf der WebsitePanel-Startseite 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 Sie das Wort STOPPED sehen, können Sie es erneut starten. Das ist alles.

0
Mohammad lm71

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

Wenn keine der oben genannten Methoden funktioniert, versuchen Sie Folgendes:

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

Dies hat meinen Hintern für ein paar Tage getreten.

0
D. Kermott

Hier noch eine Antwort hinzufügen. Wenn Sie Windows 2016 Server verwenden, auf dem IIS 10.0 ausgeführt wird, liegt dies möglicherweise daran, dass IIS nicht ordnungsgemäß installiert ist. Folgendes würde ich vorschlagen, wenn Sie sich hier befinden.

  1. Überprüfen Sie in Visual Studio die .NET Framework-Version, mit der Sie die App entwickelt haben. Klicken Sie mit der rechten Maustaste auf das Projekt, die Eigenschaftenseite und die Anwendungsregisterkarte. Ziel-Framework. In meinem Fall war es 4.6.1.

  2. Laden Sie auf dem Webserver von Google ".net framework 4.6.1" herunter und rufen Sie die MS-Download-Seite auf, auf der die von Ihrem Browser-Benutzerprogramm benötigte Version ordnungsgemäß ermittelt werden sollte. In meinem Fall war es X64.

  3. Führen Sie das Installationsprogramm aus. Beachten Sie, dass dies sicher ist, auch wenn Sie glauben, dass es möglicherweise bereits vorhanden ist. Es wird "Bereits installiert" angezeigt, wenn dies der Fall ist.

Hinweis: Jetzt müssen Sie sicherstellen, dass es als Windows-Funktion ordnungsgemäß aktiviert ist. Sie müssen auch überprüfen, ob die ASP.NET IIS - Komponenten ordnungsgemäß installiert und aktiviert sind.

  1. Wechseln Sie auf dem Webserver erneut zu Server-Manager, fügen Sie Rollen und Features hinzu, und wählen Sie dann rollenbasiert oder funktionsbasiert aus. Klicken Sie dann auf Weiter.

  2. Stellen Sie sicher, dass der lokale Server auf der Registerkarte Zielserver ausgewählt ist, und klicken Sie auf Weiter.

  3. Erweitern Sie auf der Registerkarte Serverrollen die Optionen Webserver IIS und Anwendungsentwicklung. Ich habe alles außer Server-Side-Includes und Websocket-Protokollen kaputt gemacht.

  4. Unter Verwaltungstools habe ich mich entschieden, alles zu aktivieren (einschließlich IIS 6 MMC), weil ich bestimmte Legacy-Funktionen wollte, aber das ist ein anderer Beitrag.

In meinem Fall war kein Neustart erforderlich. Hoffe das hilft jemandem.

0

Ich hatte die IP-Adresse mit einer Ziffer falsch eingegeben, was bedeutet, dass sie zu einem meiner anderen Server ging. Sehr verwirrend, da Sie von einem falschen Rechner eine .NET-Fehlerseite erhalten!

0
NickG

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

0
eitanpo

Ich habe Identity Impersonate verwendet:

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

Beim Hochfahren auf den Server müssen Sie dem Benutzernamen Zugriff auf den Ordner Temporary ASP.NET Files gewähren, damit er ordnungsgemäß lesen/schreiben/ausführen kann:

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

Ersetzen Sie offensichtlich "frameworkversion" und "aspversion" durch die von Ihnen verwendeten Versionen. 

0
dalemac