Назад | Перейти на главную страницу

IIS8.5 не будет обслуживать файлы шрифтов

По какой-то причине мой IIS не возвращает файлы шрифтов. Все они возвращаются как 404. Я проверил правильность URL-адресов и правильность типов MIME. Файлы шрифтов в настоящее время находятся внутри проекта .NET 4.5 с использованием MVC4. Когда я перемещаю файлы за пределы проекта в корневой каталог сервера, он отлично обслуживает файлы. Я убедился, что в файле web.config проекта не происходит никаких переопределений в отношении того, как обрабатываются расширения файлов.

Пока это происходит с файлами .TTF, .EOT, .SVG и .WOFF. Другие статические файлы в том же каталоге возвращаются нормально. Есть ли какой-то параметр в IIS8.5, который предотвращает возврат файлов шрифтов?

Я прикрепил файл журнала, созданный в результате отслеживания неудачных запросов.

https://dl.dropboxusercontent.com/u/39382497/fr000001.xml

Эта проблема, похоже, исчезла сама собой в процессе работы над проектом. Эндрю Мортон предоставил отличные инструкции по устранению неполадок для всех, у кого есть подобные проблемы. Приведу краткий список:

  • Убедитесь, что сервер использует правильный тип MIME. С помощью диспетчера IIS> Сервер> Проект> Типы MIME. Вот список типов MIME, которые у меня работают:

    • .eot = приложение / vnd.ms-fontobject
    • .svg = изображение / svg + xml
    • .ttf = приложение / поток октетов
    • .woff = приложение / x-font-woff
  • Если это не сработает, убедитесь, что у веб-сервера есть разрешения на папку проекта и папку, в которой хранятся файлы. Следующий учебник очень поможет.

  • Дальнейшая отладка с использованием такого инструмента, как ProcessMonitor поможет решить более сложные проблемы с сервером.

Надеюсь, это кому-то поможет.

Я диагностировал свое решение этой проблемы, изучив коды состояния в журнале ошибок ISS.

sc-status sc-substatus 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 об этой неисправности.

https://blogs.msdn.microsoft.com/asgoyal/2012/08/25/one-thing-you-must-do-when-getting-http-500-0-1346-error/

Убедитесь, что идентификатор пула приложений для соответствующего приложения является частью политики «Олицетворять клиента после аутентификации». Это требование, чтобы удостоверение пула приложений было частью этой политики напрямую или посредством унаследованного членства.

Чтобы проверить эту политику - перейдите в Пуск -> запустить -> secpol.msc -> Локальные политики -> Назначение прав пользователя

Для меня проблема заключалась в том, что группа «IIS_IUSRS» отсутствовала в этой политике.

попробуй это:

  1. создайте html-файл в [выбранном вами редакторе], который выводит что-то описательное в браузер, чтобы вы знали, что проблема решена:

    белая горячка, ничего страшного

  2. протестируйте его, чтобы убедиться, что он действительный html
  3. поместите его в каталог, из которого взяты ваши шрифты - о чем свидетельствует ошибка 404 в инструментах разработки [выбранный вами браузер] (путь должен быть относительным)
  4. перейдите к нему - разрешается?

если да, это проблема конфигурации с типами mime на сервере приложений.

если нет, ваши шрифты не разрешены, потому что ожидаемый путь неверен - посмотрите на ошибку 404 для файла .html, и она должна показать, откуда сервер приложений ищет ваши шрифты, отображая путь unc относительно корневого веб-сайта