
Aus irgendeinem Grund gibt mein IIS keine Schriftdateien zurück. Sie alle geben 404-Fehler zurück. Ich habe überprüft, dass die URLs und MIME-Typen korrekt sind. Die Schriftdateien befinden sich derzeit in einem .NET 4.5-Projekt mit MVC4. Wenn ich die Dateien aus dem Projekt in das Stammverzeichnis des Servers verschiebe, werden die Dateien problemlos bereitgestellt. Ich habe überprüft, dass in der web.config des Projekts keine Überschreibungen hinsichtlich der Handhabung der Dateierweiterungen vorgenommen werden.
Bisher geschieht dies für .TTF-, .EOT-, .SVG- und .WOFF-Dateien. Andere statische Dateien im selben Verzeichnis werden problemlos zurückgegeben. Gibt es in IIS8.5 eine Einstellung, die die Rückgabe der Schriftdateien verhindert?
Ich habe eine Protokolldatei angehängt, die durch die fehlgeschlagene Anforderungsverfolgung generiert wurde.
Antwort1
Dieses Problem scheint sich im Laufe der Arbeit am Projekt von selbst gelöst zu haben. Andrew Morton hat für alle, die ähnliche Probleme haben, einige hervorragende Schritte zur Fehlerbehebung bereitgestellt. Ich stelle eine kurze Liste bereit:
Überprüfen Sie, ob der Server den richtigen MIME-Typ verwendet. Verwenden Sie dazu IIS-Manager > Server > Projekt > MIME-Typen. Hier ist die Liste der MIME-Typen, die bei mir funktionieren:
- .eot = Anwendung/vnd.ms-Schriftobjekt
- .svg = Bild/svg+xml
- .ttf = Anwendung/Oktett-Stream
- .woff = Anwendung/x-font-woff
Wenn das nicht funktioniert, überprüfen Sie, ob der Webserver über Berechtigungen für den Projektordner und den Ordner verfügt, in dem die Dateien gespeichert sind.ein Tutorialwird sehr hilfreich sein.
Weiteres Debuggen mit einem Tool wieProzessMonitorhilft dabei, hartnäckigere Serverprobleme einzugrenzen.
Hoffe, das hilft jemandem.
Antwort2
Ich habe die Lösung für dieses Problem ermittelt, indem ich die Statuscodes im ISS-Fehlerprotokoll untersucht habe.
sc-status sc-substatus sc-win32-status
500 0 1346
Der Win32-Status zeigt an, dass
FEHLER_SCHLECHTER_IMPERSONATION_LEVEL
1346 (0x542)
Entweder wurde die erforderliche Identitätswechselebene nicht angegeben oder die angegebene Identitätswechselebene ist ungültig.
https://docs.microsoft.com/en-gb/windows/win32/debug/system-error-codes--1300-1699-
Es stellt sich heraus, dass es einen MS-Artikel zu diesem Fehler gibt.
Überprüfen Sie, ob die Anwendungspoolidentität für die jeweilige Anwendung Teil der Richtlinie „Client nach Authentifizierung imitieren“ ist. Es ist erforderlich, dass die Anwendungspoolidentität entweder direkt oder durch geerbte Mitgliedschaft Teil dieser Richtlinie ist.
Um diese Richtlinie zu überprüfen, gehen Sie zu Start –> Ausführen –> secpol.msc –> Lokale Richtlinien –> Zuweisen von Benutzerrechten
Für mich bestand das Problem darin, dass die Gruppe „IIS_IUSRS“ in dieser Richtlinie fehlte.
Antwort3
Versuche dies:
- Erstellen Sie in [dem Editor Ihrer Wahl] eine HTML-Datei, die eine beschreibende Information an einen Browser ausgibt, sodass Sie wissen, dass das Problem gelöst wurde:
Delirium tremens, keine große Sache
- Testen Sie es, um sicherzustellen, dass es gültiges HTML ist
- Platzieren Sie es in dem Verzeichnis, aus dem Ihre Schriftarten stammen – erkennbar an den 404-Fehlern in den Entwicklungstools [Ihres bevorzugten Browsers] (sollte ein relativer Pfad sein)
- Navigieren Sie dorthin – wird es aufgelöst?
Wenn ja, handelt es sich um ein Konfigurationsproblem mit den MIME-Typen in Ihrem Anwendungsserver.
wenn nein, werden Ihre Schriftarten nicht aufgelöst, da der erwartete Pfad falsch ist - sehen Sie sich den 404-Fehler für die HTML-Datei an. Er sollte verraten, wo der Anwendungsserver nach Ihren Schriftarten sucht, indem er einen UNC-Pfad relativ zum Webstamm anzeigt.