Krój czcionki nie działa w usługach IIS 8.0

118

Mam w swoim programie font-face wygenerowany z Font Squirrel. Po prostu nie mogę go uruchomić w IIS, działa w localhost. Dodałem application / font-WOFF artykuł do moich typów MIME, ale nadal nie chce do pracy.

Context
--Fonts
----font location
--css files

CSS

@font-face {
    font-family: 'wallStreetFont';
    src: url('Fonts/subway-webfont.eot');
    src: url('Fonts/subway-webfont.eot?#iefix') format('embedded-opentype'),
         url('Fonts/subway-webfont.woff2') format('woff2'),
         url('Fonts/subway-webfont.woff') format('woff'),
         url('Fonts/subway-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

EDYTUJ AKTUALNY MIME

Używam domyślnej czcionki MIME 8 usług IIS / x-woff

joetinger
źródło
Jak to wzywasz? Czy wypróbowałeś przykładowe wyjście w pliku zip Font Squirrel?
Aibrean
Jeśli korzystasz z usług IIS 8, nie powinieneś dodawać typu MIME w konfiguracji sieci Web dla WOFF. W rzeczywistości posiadanie duplikatu byłoby bardziej prawdopodobne.
Colin Bacon,
@Aibrean tak, przykładowe wyjście działa
joetinger
@ColinBacon Przeczytałem to po wysłaniu. Więc obecnie mam font / x-woff, to jest dziedziczone z IIS 8.0. Ale nadal nie
udało

Odpowiedzi:

259

Wspaniale jest widzieć, że WOFF2 jest zawarty w czcionkach Font Squirrel! Chociaż usługi IIS 8 nie wymagają dodania typu MIME, WOFFponieważ będą go potrzebować WOFF2. W3C zaleca :

application/font-woff2

Więcej informacji można WOFF2znaleźć tutaj .

Aby dodać typ MIME w usługach IIS, zmodyfikuj Web.Configw następujący sposób:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- ... -->
  <system.webServer>
    <!-- ... -->
    <staticContent>
      <!-- ... -->
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>
    <!-- ... -->
  </system.webServer>
Colin Bacon
źródło
2
Dodałem, woff2ale nadal nic
joetinger
4
Jeśli spojrzysz na swoje narzędzia deweloperskie. Czy otrzymujesz kod 404, gdy próbuje pobrać plik czcionki? Sprawdź więc, czy ścieżka jest poprawna i czy masz uprawnienia do przeglądania jej w przeglądarce.
Colin Bacon
Tak, ale nie http://192.168.72.196:85/bundles/Fonts/subway-webfont.woff2jestem pewien, skąd biorą folder pakietów. Dowolny pomysł?
joetinger
4
Zakładam, że korzystasz z pakietowania i minifikacji ASP.NET. Jeśli ustawisz to w pliku config BundleTable.EnableOptimizations = true. Twój lokalny host powinien zachowywać się tak samo, jak na serwerze produkcyjnym.
Colin Bacon
1
Dzięki za całą pomoc, którą teraz pracuje. Była to kombinacja woff2błędu 404 i błędu 404, co zakończyło się błędem w moim pakiecie. Dziękuję Ci!
joetinger
79

Aby czcionki woff i woff2 działały poprawnie w usługach IIS, należy dodać następujące typy MIME do pliku Web.Config.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>  
  <system.webServer>    
    <staticContent>
        <remove fileExtension=".woff" />
        <remove fileExtension=".woff2" />
        <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
        <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>

Jeśli nadal napotykasz błąd 404 w Google Chrome, wyczyść pamięć podręczną przeglądarki przed ponownym załadowaniem strony.

Varun
źródło
2
Specyfikacja zaleca teraz, aby mimeType dla woff było application / font-woff .
Steven
2
Otrzymywałem tylko problem .woff2 404 i to działało dla mnie. Użyłem tylko wierszy dotyczących woff2
Francisc0
26

Należy pamiętać, że w Menedżerze usług IIS można również skonfigurować typy MIME. Po prostu wybierz witrynę, a następnie kliknij dwukrotnie ikonę Typy MIME w obszarze IIS w głównym panelu.

wprowadź opis obrazu tutaj

Powinieneś wtedy zobaczyć listę wszystkich istniejących typów MIME i móc dodawać nowe za pomocą linku Dodaj ... w prawym panelu.

Scott Munro
źródło
2
dlaczego nie użyć web.config,? !!
Mojtaba Pourmirzaei
7
@MojtabaPourmirzaei Ponieważ nie każdy jest sysadminem. To jest cały powód, dla którego usługi IIS mają interfejs użytkownika.
Alph.Dev,
Jeśli wdrażasz witrynę internetową inną niż .NET w usługach IIS, musisz to zrobić w ten sposób (np. Aplikacja Angular).
Jon Kruger
0

Miałem ten problem dzisiaj podczas wdrażania ikon UI rozwiązania sieci Web Metro4 i przełączania się z CDN na opcję Skompilowana.

Mój projekt powstał na platformie WebSharper, ale rozwiązanie i tak jest niezależne od tych szczegółów implementacji.

Krótko mówiąc, odkryłem, że musiałem dodać rozszerzenie pliku, np. .ttfWewnątrz securitysekcji pod system.webServerrozszerzeniem Web.config.

<security>
    <requestFiltering>
        <fileExtensions>
            <add fileExtension=".ttf" allowed="true" />
        </fileExtensions>
    </requestFiltering>
</security>

Ta sama opcja konfiguracji jest również dostępna w ustawieniach graficznego interfejsu użytkownika usług IIS

Interfejs graficzny usług IIS

Giulio
źródło