2013-02-19 3 views
7

Beim Bereitstellen meiner MVC-Anwendung bündelt .NET Framework .NET &, wodurch mein CSS minimiert wird. Die resultierende Datei ist jedoch leer, daher werden die CSS-Regeln nicht angewendet. In Chrome bekomme ich eine Resource interpreted as Stylesheet but transferred with MIME type text/plain Warnung. In IE9 bekomme ich eine CSS was ignored due to mime type mismatch Warnung.Gebündelte CSS wird nach der Bereitstellung nicht angezeigt ... ASP.NET MVC4

Dies ist, was in meinem BundleConfig ist

bundles.Add(
    new StyleBundle("~/Content/bootstrap").Include(
     "~/Content/bootstrap/bootstrap-responsive.css", 
     "~/Content/bootstrap/bootstrap-editable.css", 
     "~/Content/bootstrap/FileUpload.css")); 

Hier ist mein Layout-Kopf ist:

<head> 
    <meta charset="utf-8" /> 
    <meta http-equiv="x-ua-compatible" content="IE=Edge" /> 
    <title>@ViewBag.Title</title> 
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
    <meta name="viewport" content="width=device-width" /> 
    <link href="@ViewBag.StyleUrl" rel="stylesheet" type="text/css" /> 
    @Styles.Render("~/Content/bootstrap") 
    <script src="~/scripts/libs/modernizr/modernizr-2.5.3.js" type="text/javascript"></script> 
</head> 

Das zusätzliche Sheet für eine dynamisch geladene Sheet ist basierend auf config in unserem Admin-Tool.

Wenn ich dies lokal ausführen, oder wenn ich debug = "true", dann bekomme ich meine individuellen Dateien & alles sieht so aus, wie es sollte. Wenn ich diese auf meiner Layout-Seite fest codiere, werden sie gut angezeigt. Ich habe überprüft, IIS & sehen Sie den richtigen MIME-Typ für CSS (was sinnvoll ist, da hardcoded Werte funktionieren). Ich habe auch überprüft, ob der Rollendienst "Statischer Inhalt" installiert ist, da ich auch in meinem Google-Blog darauf gestoßen bin.

Irgendwelche Gedanken?

+0

Können Sie Ihre CSS zeigen in den HTML-Code enthalten? – NunoCarmo

Antwort

22

Das Bündel Name der gleiche wie der Ordnernamen auf dem Dateisystem ist,

zu Ihrem Bündel ändern

bundles.Add(
new StyleBundle("~/Content/bootstrapBundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css", 
    "~/Content/bootstrap/bootstrap-editable.css", 
    "~/Content/bootstrap/FileUpload.css")); 

dh so der Name des Bündels nicht der Name eines Ordners oder

Datei
+2

Guter Fang, danke! –

+2

Awsome !! Habe meinen Tag gerettet. – Nexus23

+0

Ich habe das gemacht, aber dann wurden alle CSS-Stile durcheinander gebracht. Wenn Sie beispielsweise die Standardvorlage verwenden, funktionieren die Dropdown-Menüs für Zuhause nicht mehr, und durch Klicken wird nichts gelöscht. –

0

Wenn Sie ein Produkt wie Dot Defender verwenden, kann es Ihnen auch diese Fehlerbedingung geben. Wenn beim Bündeln der Cache-Buster-Parameter doppelte Bindestriche enthält, erkennt ein Produkt wie dot defender dies als möglichen SQL-Injection-Angriff und stört letztendlich die Anfrage/Antwort.

Eine Möglichkeit, um dies zu umgehen (vorausgesetzt, Sie können diese Software nicht ausschalten) ist nur etwas zu Ihrer ursprünglichen CSS-Datei hinzuzufügen, wie .dotdefenderbuster {}.

Ich muss überprüfen, ob der Bündelungsalgorithmus aktualisiert wurde, um Einfluss auf den Cache-Buster-Schlüssel zu haben.

Zum Beispiel: http://www.foo.com/MyApp/Content/themes/MyApp/css?v=J9DBkvB7JWRo80eUukDOe3--6DAtA1

1

Hatte das gleiche Problem. Meine Lösung war der ungültige Name des Bündels (es bestand aus '_' oder '.'). Der Name muss Klartext sein:

bundles.Add(
new StyleBundle("~/Content/bootstrap_Bundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css", 
    "~/Content/bootstrap/bootstrap-editable.css", 
    "~/Content/bootstrap/FileUpload.css")); 

sein musste:

bundles.Add(
new StyleBundle("~/Content/bootstrapBundle").Include(
    "~/Content/bootstrap/bootstrap-responsive.css", 
    "~/Content/bootstrap/bootstrap-editable.css", 
    "~/Content/bootstrap/FileUpload.css")); 
Verwandte Themen