2013-09-25 16 views
37

W mojej aplikacji ASP.NET MVC używam pakietów do kompresowania plików css i js. Problem polega na tym, że czcionki nie ładują się po włączeniu trybu optymalizacji.Pliki czcionek nie ładują się za pomocą pakietów ASP.NET

BundleTable.EnableOptimizations = true; 

Oto kod C#

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")); 
} 

I tu jest css dla czcionek.

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

Oto, w jaki sposób na stronie znajduje się odnośnik CSS.

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

Jednak, kiedy sprawdzane narzędzie Chrome Debugger, pliki czcionek są nie do wczytywania strony i moja strona wygląda źle z niewłaściwych czcionek.

Co robię źle?

+0

Problem tylko z fontFaces.css lub jakikolwiek inny plik css również nie ładuje się –

+0

tylko z krojem czcionki. strona wygląda tak, jak jest, ale nie jest czcionką. inne pliki css są z powodzeniem kompresowane. bez włączania trybu optymalizacji ładują się również czcionki. – Zafar

+0

Podejrzeń, że coś się dzieje podczas kompresowania fontFaces.css, jeśli wystąpił problem w składni css, to conajmniej dał błąd, gdy przeglądarka próbował odzyskać. teraz możesz przenieść tylko @ część kodu z kodem czcionki i sprawdzić, czy wszystko działa, co umożliwia optymalizację. –

Odpowiedz

33

Myślę, że problem dotyczy lokalizacji czcionki. Zakładam, że pakiet wirtualnej lokalizacji css /BundleStyles/css faktycznie nie istnieje. i jeśli struktura folderów jak poniżej

Treści> Czcionka

Content> styl

Jeśli to prawda, to spróbuj tego

zmianę /BundleStyles/css do /Content/css

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

i odsyłaj ence czcionkę jak ten

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

w tym przypadku czcionka zostanie załadowany w stosunku do „css” pliku, który znajduje się w folderze zawartości, która zawiera również „czcionki” folder

Jeśli to, co zakłada jest niepoprawny, pokaż nam, jak uporządkowałeś swoje pliki.

+3

Po wdrożeniu w usługach IIS prawdopodobnie okaże się przydatny, http://codingstill.com/2013/01/set-mime-types-for-web-fonts-in-iis/ – SimonGates

+1

Wystąpił problem z twoją odpowiedzią: nie będzie działać w trybie debugowania, ponieważ fonty będą się odwoływać pod folderem stylów, więc oto, jak go rozwiązałem: Mam folder Content/css i folder Content/fonts. Ustawiłem ścieżkę wirtualną pakietu na "~/Content/css/styles", w ten sposób nie musiałem usuwać "../" z odniesienia do czcionki, ponieważ folder czcionek pozostanie jeden poziom powyżej pliku "styles" . To powiedziawszy, działa poprawnie w trybie debugowania, ponieważ głębokość ścieżek pozostaje taka sama. – Boanerge

+4

Miałem ten sam problem, aby uzyskać dostęp do fontów, świetnych czcionek, dla ** innych rozwiązań ** wypróbuj te linki, które dotyczą 'StyleBundle' ** virtualpath **: [Link 1] (http://www.mvccentral.net/story/details/articles/kahanu/stylebundle-403-error-solved), [Link 2] (http://forums.asp.net/t/1774324.aspx?MVC4+css+bundling+and+image+references), [Link 3] (http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-and-minification/), [Link 4] (http://jameschambers.com/ 2014/08/dodanie-trochę-font-awesome-to-mvc-and-bootstrap /), mam nadzieję, że to komuś pomaga. – stom

7

Świetna odpowiedź powyżej.

Alternatywa - jeśli z jakiegoś powodu powyższe nie działało dla Ciebie - zmieniłaby sposób, w jaki właściwość src @ font-face odwołuje się do folderu "Czcionki". "../" -ing nie działa zbyt dobrze do pakowania, więc odwołuje się bezpośrednio z folderu głównego witryny. Assumung folderze Fonts „” jest jednym z korzenia w dół, to zmienić:

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

do tego:

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

Będziesz pobierać takie same wyniki, gdy strona jest prowadzony w trybie debugowania też.

+1

To nie działa, jeśli aplikacja jest wdrożona jako aplikacja wirtualna – Laserson

+0

Pracował dla mnie; dzięki! – contactmatt

1

Poszukałem w Internecie tego dzisiaj, ponieważ pojawia się ten problem.Oto co pracował dla mnie:

  1. Przełącznik/pakiet/nie był rzeczywiście problem (próbowałem ten pierwszy)
  2. Zmieniłem apostrofów aby cudzysłowach & czcionki pracowali - ale nie mam pojęcia dlaczego, więc jeśli ktoś wie, proszę, rozwiąż zagadkę.
Powiązane problemy