MVC4-Style-Bundle mit 403


98

Wenn die Bündelung / Minimierung aktiviert ist, scheinen einige meiner Bündel eine ungültige URL im Browser zu haben (die mit einem / endet), und IIS gibt einen verbotenen 403-Fehler aus, als würde versucht, den Inhalt eines Ordners aufzulisten.

Es gibt keinen Unterschied in der Art und Weise, wie meine Bundles eingerichtet sind - sie sind nicht .min.css, die Zugriffsberechtigungen sind korrekt usw.



Antworten:


232

Meine Bundles wurden als Pfade registriert, die einem tatsächlichen Ordner in der Lösung entsprachen, z ~/Content/forum.

Dies funktioniert einwandfrei, wenn die Bündelung deaktiviert ist (das Bündel ist korrekt enthalten!), Nicht jedoch, wenn die Bündelung aktiviert ist.

Die Lösung besteht darin, den registrierten Namen des Bundles so zu ändern, dass er nicht mit dem im Dateisystem vorhandenen übereinstimmt.


20
Beachten Sie auch, dass sich der Dateiname des Bundles unter dem Ordner befindet, der das eigentliche CSS enthält, wenn sich die CSS-Dateien auf Bilder oder andere Dateien beziehen, die sich auf das CSS beziehen . Zum Beispiel, ~/Content/myfolder/bundlewenn CSS unterContent/myfolder
Kieren Johnstone

1
Ich hatte zwei Bundles: ~ / Content / Kendo (für CSS) und ~ / Bundles / Kendo (für Skripte). Also: 403 Fehler. Als ich den Namen eines von ihnen änderte, war das Problem weg. Vielen Dank.
VikciaR

1
@KierenJohnstone Entschuldigung, dass "Change the registered name of the bundle"ich nicht spezifisch bin, was meinst du damit? - Ich habe den Namen des von uns zugewiesenen Bundles angenommen . Gefällt mir (der fettgedruckte Teil) -> bundles.Add(new StyleBundle( "~ / Content / css" ).Include("~/Content/site.css"));
Don Thomas Boyle

1
Genau richtig. Dies scheint ein Fehler im FontAwesome-Nuget-Paket zu sein.
Wolfyuk

1
Auch im select2 nuget-Paket.
Tetsujin no Oni

3

In meinem Fall wurde das Bundle als Verzeichnis angegeben, @Scripts.Render("~/scripts")sodass IIS nicht wusste, wie die eigentliche js-Datei bereitgestellt werden soll. Ich habe den Bundle-Namen geändert, um eine Javascript-Datei darzustellen, @Scripts.Render("~/scripts.js")und das hat das Problem behoben. Gleiches galt für mein Style-Bundle.


3

Das Problem ist die Namenskonvention, die Ihr Bundle-Name haben sollte

("bundles/css") 

Dies löste mein Problem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.