2013-09-25 13 views
37

In meiner ASP.NET MVC-Anwendung verwende ich Bundles, um CSS- und JS-Dateien zu komprimieren. Das Problem ist - die Schriften werden nicht geladen, nachdem ich den Optimierungsmodus aktiviert habe.Font-Dateien laden nicht mit ASP.NET-Bundles

BundleTable.EnableOptimizations = true; 

Dies ist die C# -Code

public static void RegisterBundles(BundleCollection bundles) { 
    RegisterStyles(bundles); 
    BundleTable.EnableOptimizations = true; 
} 

private static void RegisterStyles(BundleCollection bundles) { 
bundles.Add(new StyleBundle("~/BundleStyles/css").Include(
    "~/Content/Styles/bootstrap/bootstrap.css", 
    "~/Content/Styles/reset.css", 
    "~/Content/Styles/gridpack/gridpack.css", 

    "~/Content/Styles/fontFaces.css", 
    "~/Content/Styles/icons.css", 

    "~/Content/Styles/inputs.css", 
    "~/Content/Styles/common.css", 
    "~/Content/Styles/header.css", 
    "~/Content/Styles/footer.css", 
    "~/Content/Styles/cslider/slider-animations.css", 
    "~/Content/Styles/cslider/slider-base.css")); 
} 

Und hier ist die CSS für Schriftarten.

@font-face { 
     font-family: ProximaNova; 
     src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
     font-weight: bold; 
     font-style: normal; 
    } 

So wird CSS auf der Seite referenziert.

<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

Allerdings, wenn ich mit Chrome Debugger-Tool überprüft, die Schriftart-Dateien laden nicht auf der Seite und meine Seite sieht schlecht aus mit falschen Schriftart.

Was mache ich falsch?

+0

Wird das Problem nur mit fontFaces.css oder anderen CSS-Dateien –

+0

nicht nur mit Schriftart-Gesicht geladen. Die Seite sieht so aus wie sie ist, aber keine Schrift. Andere CSS-Dateien werden erfolgreich komprimiert. Ohne Aktivierung des Optimierungsmodus werden auch die Schriften geladen. – Zafar

+0

Ich vermute, dass beim Komprimieren von fontFaces.css etwas passiert. Wenn es ein Problem in der css-Syntax gab, wurde mindestens ein Fehler angezeigt, während der Browser versuchte, abzurufen. Jetzt können Sie nur @ font-face Teil des Codes bewegen und sehen, ob Dinge funktionieren, die Optimierung ermöglichen. –

Antwort

33

Nun, ich denke, das Problem ist mit Ihrer Schriftstelle. Ich nehme an, dass der gebündelte css virtual location /BundleStyles/css nicht wirklich existiert. und wenn Sie Ihre Ordner-Struktur wie unten

Inhalt> Font

Content> Stil

Wenn dies wahr ist, dann versuchen, diese

Änderung /BundleStyles/css zu /Content/css

<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

und beziehen ENCE Ihre Schrift wie diese

src: url('Fonts/ProximaNova/ProximaNova-Bold.otf') 

in diesem Fall wird Ihre Schrift in Bezug auf die „css“ Datei geladen werden, die innerhalb des Content-Ordner befindet, die auch die „Fonts“ enthält Ordner

Wenn das, was ich davon ausgegangen, ist falsch Bitte zeigen Sie uns, wie Sie Ihre Dateien strukturiert

+3

Wenn Sie in IIS bereitstellen, finden Sie wahrscheinlich dieses nützliche http://codingstill.com/2013/01/set-mime-types-for-web-fonts-in-iis/ – SimonGates

+1

Ich hatte ein Problem mit Ihrer Antwort: es funktioniert nicht im Debug-Modus, weil die Schriftarten unterhalb des Stil-Ordners referenziert werden, also hier ist, wie ich es gelöst habe: Ich habe einen Content/CSS-Ordner und einen Content/Schriftarten-Ordner. Ich habe den virtuellen Pfad des Pakets auf "~/Content/css/styles" gesetzt, so dass ich das "../" nicht aus der Font-Referenz entfernen musste, weil der Fonts-Ordner eine Ebene über der "styles" -Datei bleibt . Das heißt, es funktioniert gut im Debug-Modus, weil die Pfade Tiefe gleich bleiben. – Boanerge

+4

Ich hatte das gleiche Problem, um font awesome Schriftarten zugreifen, für ** andere Lösungen ** versuchen Sie diese Links, die sich mit 'StyleBundle' ** virtualpath ** befasst: [Link 1] (http://www.mvccentral.net/story/details/articles/kahanu/stylebundle-403-error-loaded), [Link 2] (http://forums.asp.net/t/1774324.aspx?MVC4+css+bundling+und+image+referenzen), [Link 3] (http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-and-minification/), [Link 4] (http://jameschambers.com/ 2014/08/hinzufügen-einige-font-awesome-zu-mvc-und-bootstrap /), hoffe das hilft jemandem. – stom

7

Große Antwort oben.

Eine Alternative - wenn aus irgendeinem Grund das oben für Sie nicht funktionierte - wäre zu ändern, wie die Eigenschaft @ font-face src auf den Ordner "Fonts" verweist. '../' -ing funktioniert nicht sehr gut für Bündelung, so verweisen Sie stattdessen direkt aus dem Site-Stammordner.

@font-face { 
    src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

Um dies: Assumung den Ordner ‚Fonts‘ ein nach unten von der Wurzel ist, dies ändern

@font-face { 
    src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

Sie werden die gleichen Ergebnisse abzurufen, wenn die Site auch im Debug-Modus lief ist.

+1

Es funktioniert nicht, wenn Ihre Anwendung als virtuelle Anwendung bereitgestellt wird – Laserson

+0

Arbeitete für mich; Vielen Dank! – contactmatt

1

Ich habe heute online nach diesem gesucht, weil ich auf dieses Problem stoße.Hier ist, was für mich gearbeitet:

  1. Der/Bündel/war nicht wirklich ein Problem (Ich habe versucht, diese erste)
  2. Ich änderte einfache Anführungszeichen doppelte Anführungszeichen & die Schriften gearbeitet - aber keine Ahnung, warum, also wenn jemand weiß, bitte fühlen Sie sich frei zu erarbeiten.