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.
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
Fehler 403.14 ist der HTTP-Fehlercode, der den Inhalt eines Verzeichnisses nicht auflisten darf. Bitte sei dir sicher
Normalerweise sind a und d die größten Probleme bei MVC-Bereitstellungen für IIS
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.
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
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 }
);
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.
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
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Sie können den obigen Code verwenden
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.
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
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:
Im IIS Manager in Modules habe ich das Erben in den Knoten UrlRoutingModule-4.0 geändert:
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
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.
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.
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!');
}
}
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.
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).