Event ID 2280 IIS W3SVC: Сбой загрузки модуля DLL (Конфигурация)
Архитектура IIS и загрузка модулей (ISAPI/Native)
Событие 2280 логируется в журнале Application источником IIS-W3SVC-WP. Сообщение: «Сбой загрузки модуля DLL [Путь_К_DLL] из-за проблемы конфигурации. Текущая конфигурация поддерживает только модули, созданные для [x86 или x64] архитектуры». Симптомы: пул приложений (Application Pool) успешно стартует, но при первом же обращении пользователя к сайту возвращается ошибка HTTP 500.19 (Internal Server Error) или 503 (Service Unavailable), а в лог падает событие 2280. Сайт полностью недоступен.
Механика сбоя (Bitness Conflict)
Веб-сервер IIS (Internet Information Services) имеет модульную архитектуру. В файле applicationHost.config прописаны пути к библиотекам (например, модуль URL Rewrite или PHP FastCGI). Если рабочий процесс w3wp.exe запущен в 64-битном режиме, а модуль (DLL), который он пытается подгрузить, является 32-битным (или наоборот) — ядро Windows (Loader) жестко отбрасывает такую библиотеку, вызывая 2280.
Пошаговое дерево решений (Конфликт Архитектур)
Сценарий 1: Переключение битности пула (Enable 32-Bit Applications)
Это самое частое и быстрое решение. Если старый сайт (или ERP-система вроде 1С) использует старые 32-битные COM-объекты или ISAPI-фильтры, вы должны принудительно перевести пул в режим x86.
- Откройте Диспетчер служб IIS (IIS Manager).
- В левом меню выберите Пулы приложений (Application Pools).
- Найдите пул вашего сайта, нажмите правой кнопкой -> Дополнительные параметры (Advanced Settings).
- В разделе Общие (General) найдите параметр Разрешить 32-разрядные приложения (Enable 32-Bit Applications).
- Измените значение на True (если модуль x86) или False (если модуль x64).
- Перезапустите пул приложений.
Сценарий 2: Отсутствие Visual C++ Redistributable
Событие 2280 может возникнуть, даже если битность пула правильная. Проблема в том, что сама DLL-библиотека модуля (например, rewrite.dll для URL Rewrite или aspnetcorev2.dll для .NET Core) зависит от базовых библиотек Windows (C++ Runtime). Если они не установлены, DLL "не может загрузиться".
- Решение: Установите Microsoft Visual C++ Redistributable (x64 и x86) версий 2013, 2015-2022 на сервер. Перезапустите IIS (
iisreset).
Сценарий 3: Битый путь в applicationHost.config
Иногда после неудачного удаления модуля (например, Web Deploy), IIS продолжает искать его DLL.
- Откройте файл конфигурации сервера:
C:\Windows\System32\inetsrv\config\applicationHost.config(Сделайте бэкап!). - Найдите поиском имя сбойного модуля из события 2280.
- Удалите строку в секции
<globalModules>, ссылающуюся на отсутствующий DLL-файл.
Типовые ошибки администраторов
- Попытка менять web.config: Событие 2280 — это проблема глобального уровня (Server-level). Правка локального
web.configсайта не поможет, так как рабочий процесс w3wp.exe 'спотыкается' еще на этапе загрузки базовых модулей ядра IIS.
Траблшутинг архитектуры IIS (ISAPI, FastCGI, .NET Core) требует DevOps-квалификации. Делегируйте веб-инфраструктуру инженерам ITSTM: мы настроим CI/CD пайплайны, разрешим конфликты Application Pools, установим нужные Runtime-компоненты и обеспечим бесперебойную работу ваших сервисов 24/7.
Частые вопросы (FAQ)
Почему 2280 возникает при установке модуля URL Rewrite?
Установщик URL Rewrite Module прописывает свои DLL-файлы (rewrite.dll) в глобальную секцию IIS. Если вы используете 32-битные пулы, убедитесь, что вы скачали и установили версию URL Rewrite, содержащую как x64, так и x86 сборки (обычно это общий инсталлятор WebPI).
Связан ли 2280 с правами доступа (Access Denied)?
Обычно нет. При нехватке прав (если IIS_IUSRS не может прочитать файл .dll) ядро выдаст другую ошибку (Access Violation или код 500.19 с указанием на Security). 2280 — это строго архитектурный отказ загрузчика (LoadLibrary).
Что делать, если в логе не указан путь к DLL?
Такое бывает при глубоких сбоях .NET Framework. Включите Failed Request Tracing (FREB) в IIS Manager для кода ошибки 500. Трассировка сгенерирует XML-отчет, где будет детально расписан каждый шаг инициализации w3wp.exe и точное имя модуля.
Влияет ли параметр 'Режим управляемого конвейера' (Classic / Integrated)?
Да. Старые модули (например, фильтры ISAPI от старых версий 1С) могут работать ТОЛЬКО в классическом режиме (Classic Mode). Перевод пула в Integrated Mode вызовет сбой загрузки таких модулей.
Поможет ли переустановка роли Web Server (IIS)?
Это крайняя мера. Проще удалить 'глючный' сторонний модуль через 'Установку и удаление программ' (appwiz.cpl). Переустановка IIS полностью сотрет все ваши сайты (applicationHost.config).