
По какой-то причине мой IIS не возвращает файлы шрифтов. Все они возвращают 404. Я проверил, что URL-адреса и типы MIME верны. Файлы шрифтов в настоящее время находятся внутри проекта .NET 4.5 с использованием MVC4. Когда я перемещаю файлы за пределы проекта в корневой каталог сервера, он обслуживает файлы нормально. Я проверил, что в web.config проекта не происходит никаких переопределений того, как обрабатываются расширения файлов.
Пока это происходит для файлов .TTF, .EOT, .SVG и .WOFF. Другие статические файлы в том же каталоге возвращаются нормально. Есть ли какие-то настройки в IIS8.5, которые не позволяют возвращать файлы шрифтов?
Я прикрепил файл журнала, который был создан при отслеживании невыполненного запроса.
решение1
Эта проблема, похоже, решилась сама собой в ходе работы над проектом. Эндрю Мортон предоставил несколько отличных шагов по устранению неполадок для тех, у кого есть похожие проблемы. Я предоставлю краткий список:
Проверьте, что сервер использует правильный тип MIME. Используя IIS Manager > Server > Project > MIME Types. Вот список типов MIME, которые работают у меня:
- .eot = application/vnd.ms-fontobject
- .svg = изображение/svg+xml
- .ttf = приложение/поток октетов
- .woff = приложение/x-шрифт-woff
Если это не сработает, проверьте, есть ли у веб-сервера разрешения на папку проекта и папку, в которой хранятся файлы. Следуяучебникочень поможет.
Дальнейшая отладка с использованием такого инструмента, какProcessMonitorпоможет сузить круг наиболее сложных проблем с сервером.
Надеюсь, это кому-то поможет.
решение2
Я нашел решение этой проблемы, изучив коды состояний в журнале ошибок МКС.
sc-статус sc-подстатус sc-win32-статус
500 0 1346
Статус win32 указывает на то, что
ERROR_BAD_IMPERSONATION_LEVEL
1346 (0x542)
Либо требуемый уровень олицетворения не был предоставлен, либо предоставленный уровень олицетворения недействителен.
https://docs.microsoft.com/en-gb/windows/win32/debug/system-error-codes--1300-1699-
Оказывается, по этой ошибке есть статья в MS.
Проверьте, является ли идентификатор пула приложений для соответствующего приложения частью политики «Имитировать клиента после аутентификации». Это требование, чтобы идентификатор пула приложений был частью этой политики, напрямую или через унаследованное членство.
Чтобы проверить эту политику, перейдите в Пуск –> Выполнить –> secpol.msc –> Локальные политики –> Назначение прав пользователя.
Для меня проблема заключалась в том, что в этой политике отсутствовала группа «IIS_IUSRS».
решение3
попробуй это:
- создайте HTML-файл в [редакторе по вашему выбору], который выведет в браузер что-то описательное, чтобы вы знали, что проблема решена:
белая горячка, ничего страшного
- проверьте его, чтобы убедиться, что это действительный HTML
- поместите его в каталог, из которого получены ваши шрифты - о чем свидетельствуют ошибки 404 в инструментах разработки [вашего браузера] (должен быть относительный путь)
- перейдите к нему - он разрешится?
если да, то это проблема конфигурации типов MIME на вашем сервере приложений
если нет, ваши шрифты не разрешены, потому что ожидаемый путь неверен - посмотрите на ошибку 404 для файла .html, и она должна показать, откуда сервер приложений ищет ваши шрифты, отображая путь unc относительно корневого веб-каталога.