Bundle de style MVC4 donnant 403

99

Lorsque le regroupement / la minification est activé, certains de mes ensembles semblent avoir une URL non valide dans le navigateur (se terminant par un /), et IIS donne une erreur 403 interdite, comme si j'essayais de répertorier le contenu d'un dossier.

Il n'y a aucune différence dans la façon dont mes bundles sont configurés - ils ne sont pas .min.css, les autorisations d'accès sont correctes, etc.

Kieren Johnstone
la source

Réponses:

233

Mes bundles ont été enregistrés comme des chemins qui correspondaient à un dossier réel sur la solution, par exemple ~/Content/forum.

Cela fonctionne bien lorsque le regroupement est désactivé (le bundle est inclus correctement!), Mais pas lorsque le regroupement est activé.

La solution consiste à modifier le nom enregistré du bundle pour qu'il ne soit pas le même que tout ce qui existe dans le système de fichiers.

Kieren Johnstone
la source
20
Notez également si les fichiers CSS font référence à des images ou à d'autres fichiers relatifs au CSS, assurez-vous que le nom de fichier du bundle est quelque chose sous le dossier contenant le CSS réel. Par exemple, ~/Content/myfolder/bundlesi CSS est sousContent/myfolder
Kieren Johnstone
1
J'avais deux bundles: ~ / Content / kendo (pour css) et ~ / bundles / kendo (pour les scripts). Donc: erreur 403. Quand j'ai changé de nom, l'un d'entre eux - le problème est parti. Merci.
VikciaR
1
@KierenJohnstone désolé de ne pas être précis, "Change the registered name of the bundle"que voulez-vous dire par là? - J'ai pris le nom du bundle que nous attribuons. Comme (la partie en gras) -> bundles.Add(new StyleBundle( "~ / Content / css" ).Include("~/Content/site.css"));
Don Thomas Boyle
1
Spot sur. Cela semble être un bogue dans le paquet FontAwesome nuget.
wolfyuk
1
Également dans le package select2 nuget.
Tetsujin no Oni
3

Dans mon cas, le bundle a été spécifié comme répertoire, @Scripts.Render("~/scripts")donc IIS ne savait pas comment servir le fichier js réel, j'ai changé le nom du bundle pour représenter un fichier javascript @Scripts.Render("~/scripts.js")et cela l'a corrigé. La même chose était vraie pour mon ensemble de styles.

mohas
la source
3

Le problème est la convention de dénomination de votre nom de bundle

("bundles/css") 

Cela a résolu mon problème.

Usman
la source