it-swarm.com.de

MVC4 HTTP-Fehler 403.14 - Verboten

Ich habe eine .net4.5 ASP.NET MVC4-Web-App erstellt, die lokal einwandfrei funktioniert (IIS Express- und Dev-Server), aber sobald ich sie auf meinem Webserver bereitstelle, wird der 403-Fehler ausgegeben. Ich habe .Net 4.5RC auf dem Server installiert und sogar das aspnet_regiis -i-Bit ausprobiert, das jeder für seine Probleme mit früheren Versionen von MVC/.Net empfohlen hat, aber es half nicht.

Irgendwelche Ideen?

EDIT: Weitere Informationen zur Situation. Der Server ist 32bit und ich habe 4 andere MVC3-Anwendungen, die gut funktionieren. Es ist nur meine MVC4-App, die nicht funktioniert.

88
mithun_daa

Versuchen 

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

Über 

https://serverfault.com/questions/405395/unable-to-get-anything-except-403-von-a-net-4-5-website

172
MarkKGreenway

Fehler 403.14 ist der HTTP-Fehlercode, der den Inhalt eines Verzeichnisses nicht auflisten darf. Bitte sei dir sicher 

  1. Sie haben die Website als Anwendung in IIS eingerichtet. 
  2. Sie haben .NET 4.5 auf dem Server installiert 
  3. Sie haben den Anwendungspool so eingestellt, dass die richtige Version von .__ ausgeführt wird. .NET Framework (dh es ist nicht auf .NET 2.0 gesetzt.) 
  4. Sie verwenden die integrierte Pipeline in Ihrem Anwendungspool
  5. .NET 4.5 ist tatsächlich in IIS registriert. Siehe diesen Beitrag für ein ähnliches Problem/eine ähnliche Lösung

Normalerweise sind a und d die größten Probleme bei MVC-Bereitstellungen für IIS

22
Tommy

Vielleicht ... Wenn Sie den Publish Wizard (wie ich) verwendet haben und das Kontrollkästchen "Vorkompilieren während der Veröffentlichung" aktivieren (wie ich), und dieselben Symptome sehen ... 

Ja, ich habe mich selbst über den Kopf geschlagen, aber nachdem Sie dieses Kontrollkästchen deaktiviert haben, eine scheinbar nicht zusammenhängende Einstellung, verschwinden alle beschriebenen Symptome nach der Umverteilung.

Hoffentlich behebt das einige Leute.

11

Windows-> Start -> Schalten Sie die Widows-Funktionen ein und aus

Stellen Sie sicher, dass Sie die erforderlichen Optionen einchecken

 enter image description here

9
Kurkula

Vor dem Auftragen

runAllManagedModulesForAllRequests="true"/>

betrachten Sie den Link unten, der auf eine weniger drastische Alternative schließen lässt. Im Beitrag bietet der Autor folgende Änderungen an der lokalen web.config an:

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

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagemodulesfo.html

6
Jason Koopmans

Es gibt einen Refactor -> Rename Bug in Visual Studio 2012, der die "id" im literal string - Wert des URL-Parameters in meiner RouteConfig.cs falsch umbenannte. Dies führte zu einer neuen und ansonsten korrekten Installation von 403.14 in Windows Server 2012 und Windows Server 2008 R2.

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

wurde in geändert

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

Wenn Sie IIS 8.5 unter Windows 8 oder Server 2012 ausführen, wird mvc 4/5 (.net 4.5) möglicherweise nicht in einem virtuellen Verzeichnis ausgeführt. Wenn Sie in der Host-Datei einen lokalen Host-Eintrag erstellen, der wieder auf Ihren lokalen Computer verweist, und dann eine neue lokale IIS - Website auf diesen Ordner (mit dem entsprechenden Host-Kopfzeileneintrag) verweisen, wird dies funktionieren.

2
Mastro

Sie können auch eine 403 erhalten, wenn Sie beim Testen mit dem dev-Server die integrierte Pipeline verwenden und dann als klassischen Pipeline-Modus auf Ihrem Live-Webserver IIS 7.5 installieren. Außerdem fehlte mein app_data-Ordner, der ebenfalls erforderlich war

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

Sie können den obigen Code verwenden

1
Jinto John

Ich hatte den Anwendungspool der neuen App auf die Variable DefaultAppPool in IIS gesetzt, die offensichtlich die Classic-Pipeline mit .NET v.2.0 verwendet.

Um das Problem zu lösen, habe ich einen neuen App-Pool mit der Integrated-Pipeline und dem .NET v4.0 erstellt. Nur für diese neue Anwendung und dann hat alles wie erwartet funktioniert.

Vergessen Sie nicht, diesen neuen App-Pool der Anwendung zuzuweisen. Wählen Sie die Anwendung in IIS aus, klicken Sie auf Basic Settings und wählen Sie dann den neuen App-Pool für die App aus.

1

ich sehe in letzter Zeit häufiger IIS und lässt 32-Bit-Anwendungen laufen 

Hast du es versucht? Ansonsten benötigen wir weitere Informationen zu Produktions- und Entwicklungsserverversionen 

0
MarkKGreenway

In meinem Fall haben weder Windows-Features noch aspnet_regiis -i die Arbeit gemacht. Nach stundenlangem Graben im Internet machte ich meine eigene Lösung:

  1. Im IIS Manager in Modules habe ich das Erben in den Knoten UrlRoutingModule-4.0 geändert:

     enter image description here

  2. In web.config habe ich einige Tipps aus diesem Forum eingefügt:

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

Ich hoffe es hilft

0
Sylwia M

Ich habe ein etwas anderes Problem, auf Server 2012 habe ich irgendwie vergessen, asp.net 4.5 zu aktivieren. Wenn Sie also dieses Problem haben, überprüfen Sie noch einmal, ob Sie es aktivieren.

0

In meinem Fall war die Standardseite meiner Anwendung index.html, die in den Standarddokumentoptionen nicht vorhanden war. Durch das Hinzufügen des Fehlers wurde der Fehler 403.14 Forbidden behoben.

0
Erik K.

In meinem Fall wurde das Problem durch ein benutzerdefiniertes ActionFilterAttribute verursacht, das eine Art globales Filterattribut war. Das Attribut hat einen Dienst über Autofac instanziiert, der Dienst ist jedoch im Konstruktor abgestürzt:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}
0
Artem Vertiy

Ich verwende Windows Server 2012 R2 unter Azure und ASP.NET 4.5, IIS 8

Ich habe dieses Problem gelöst, indem ich alle ASP.NET-Elemente in "Programme und Funktionen" deinstalliert und dann ASP.NET mit Server-Manager mithilfe von "Rollen und Features hinzufügen" neu installiert: Wählen Sie eine rollenbasierte oder funktionsbasierte Installation aus, wählen Sie meinen Server aus und dann Wählen Sie für Select Server Role ausgewählt Web Server (IIS)/Web Server/Application Development aus, klicken Sie auf ASP.NET 4.5, bestätigen Sie die Installation einer Voraussetzung, und installieren Sie anschließend ASP.NET 4.5 erneut.

Bei meinen vorherigen Suchen hatte ich den Eindruck, dass das Problem tatsächlich auf ein Registrierungsproblem bei ASP.NET zurückzuführen ist. Bei früheren Versionen von ASP.NET gibt es tatsächlich ein Dienstprogramm, das Sie zum Registrieren von ASP.NET ohne Neuinstallation ausführen können, das jedoch scheinbar nicht mehr verfügbar ist.

0
fsbf

Ich löse das Problem beim Öffnen des Visual Studios, Erweitern der Referenzen und Ändern der Eigenschaft "Copy Local" in "True".

Ich stelle fest, dass ich die DLLs der alten Version mit den DLLs meiner neuen Version vergleiche (das funktionierte nicht).

0
Wagner