Ich führe eine App auf App Harbor aus, die in MVC4 geschrieben wurde.
Ein Bündel von CSS-Dateien funktioniert nicht. Auf meinem lokalen Computer im Debug-Modus wird der Code der App und die Dateien angezeigt. Die App funktioniert wie erwartet.
<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>
Wenn ich die App auf Appharbor hochlade, wird das Bundle im Code angezeigt, aber die App funktioniert nicht.
<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>
Wenn ich diesen Link im durchsuche, href
erhalte ich 403 - Verboten: Der Zugriff wird verweigert.
Wie kann ich das beheben?
asp.net-mvc
asp.net-mvc-4
appharbor
asp.net-optimization
Ricardo Polo Jaramillo
quelle
quelle
Antworten:
Ich vermute, dass der Pfad
Content/css
in Ihrer App auf der Festplatte vorhanden ist. In diesem Fall würde IIS die Anforderung verarbeiten, nicht MVC.Stellen Sie sicher, dass der virtuelle Pfad für das Bundle (der Parameter des StyleBundle-Konstruktors) nicht mit einem Ordner im Dateisystem übereinstimmt.
Aus den Kommentaren:
quelle
Dieses Problem ist, dass .NET standardmäßig keine Anforderungen mit der Erweiterung .js oder .css "verarbeitet".
Hierfür gibt es zwei Korrekturen (Sie müssen nur EINEN ausführen)
A) Entfernen Sie die Erweiterungen aus den Bundle-Namen. (empfohlen) Dadurch verarbeitet .NET die Anforderung und führt sie über das BundleModule aus.
B) Fügen Sie dies zu Ihrer web.config im Abschnitt system.webServer hinzu, wodurch .NET veranlasst, .js- und .css-Anforderungen über das BundleModule auszuführen.
Ein großes Dankeschön an Ray Moro, der die eigentliche Ursache herausgefunden und mir auf meinem Blog mitgeteilt hat : http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html
quelle
Passierte auch bei mir, als ich versuchte, meine ASP.NET MVC-App auf AppHarbor bereitzustellen.
Ich hatte ein Stylesheet-Bundle mit dem Namen
und die Ordnerstruktur war
Durch
"~/Content/bootstrap-css"
einfaches Ändern des Bundle-Namens in mein Problem wurde das Problem behoben.quelle
Ich weiß, dass ich 4 Jahre zu spät zu dieser Frage komme, aber das hat bei mir funktioniert.
quelle
403 Fehler behoben. Hier finden Sie eine detaillierte Erklärung und Lösung für den 403-Fehler.
Die Lösung wird für das CSS-Bundle demonstriert. Dies gilt jedoch auch für JavaScript.
http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved
Stellen Sie kurz gesagt sicher, dass der virtuelle Pfad
[Script | Style]Bundle("~/content/[script | css]")
nicht mit einem Ordner im Dateisystem übereinstimmt (z. B.C:\approot\Content\[script | css]
)[Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")
quelle
Ich habe das Problem gelöst, indem ich die folgende Codezeile in der BundleConfig-Klasse hinzugefügt habe
quelle
Was ich mache ist sehr einfach,
Ich füge "js" am Ende von ScriptBundle wie folgt hinzu: new ScriptBundle ("~ / bundles / appjs") Und ich füge "css" am Ende von StyleBundle wie folgt hinzu: new StyleBundle ("~ / content / appcss")
Meine Ordnernamen enden nie mit "js" oder "css".
Das sollte es tun.
quelle
Dies gilt auch für die 'ScriptBundle-Klasse'. Stellen Sie sicher, dass der 'Parametername' für den Konstruktor nicht mit einem Pfad im Webanwendungsdateisystem übereinstimmt. Denken Sie daran, dass IIS versucht, die Datei / Anforderung bereitzustellen.
quelle
Das Problem kann auch von der zu verschlüsselnden Datei herrühren. Dies fiel mir ein, als ich BootStrap heruntergeladen und die mitgelieferten Dateien verwendet habe. Sie wurden im Windows Explorer grün angezeigt und funktionierten in Visual Studio einwandfrei. Bei der Bereitstellung wurde jedoch ein 403-Fehler angezeigt.
Sie können sehen, ob sie verschlüsselt sind, indem Sie zu Eigenschaften, dann zu erweiterten Eigenschaften und einem Kontrollkästchen mit Verschlüsselung wechseln.
Deaktivieren Sie und es wird kein Problem mehr sein.
quelle
Ich habe das gleiche Problem mit diesem (403 Verbotenen) Fehler. In meinem Fall ist der Grund dafür, dass der Proxyserver in meiner Organisation meine CSS-Datei blockiert. Der CSS-Dateiname entspricht einer der Blockregeln.
quelle
Ich habe herausgefunden, dass sich die Datei bootstrap.css nicht im Inhaltsordner befindet, also habe ich sie in den Paketen gesucht und dort eingefügt. Es hat funktioniert!
quelle