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.

Kieren Johnstone
quelle

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.

Kieren Johnstone
quelle
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.

Mohas
quelle
3

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

("bundles/css") 

Dies löste mein Problem.

Usman
quelle