Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Windows Server, AD и Роли

HTTP Error 500.0 Internal Server Error в IIS - Полный гайд

Обновлено: 15.08.2026 · Официальная документация ↗

Архитектура модулей IIS и симптомы сбоя (HTTP 500)

Пользователи открывают корпоративный сайт (например, 1С WEB, OWA или внутренний портал) и видят страницу с ошибкой: «HTTP Error 500.0 - Internal Server Error. The page cannot be displayed because an internal server error has occurred». (Внутренняя ошибка сервера. Страница не может быть отображена).

Суть ошибки 500.0 (General Failure)

В отличие от >500.19 (Ошибка web.config) или >503 (Пул упал), код 500.0 — это классический отказ на уровне приложения (Worker Process) или расширения (ISAPI/CGI). Процесс w3wp.exe жив, файл конфигурации прочитан успешно, но когда IIS попытался выполнить код (PHP, ASP.NET или сторонний DLL модуль), этот модуль вернул фатальную ошибку (Exception), упал с Access Denied (нехватка прав на чтение файла), либо завис.

Пошаговое дерево решений (Отладка и Права)

Сценарий 1: Нехватка прав NTFS (ApplicationPoolIdentity)

В современных IIS (версии 7.5+) пулы приложений работают не от имени NETWORK SERVICE, а от уникальных виртуальных учеток пула (ApplicationPoolIdentity). Если вы скопировали файлы сайта в папку, ядро IIS не сможет их прочитать для выполнения (Access Denied).

  1. Откройте папку сайта (например, C:\inetpub\wwwroot\my_site).
  2. Свойства -> Безопасность (Security) -> Изменить -> Добавить.
  3. В поле имен введите: IIS AppPool\ИМЯ_ВАШЕГО_ПУЛА (например, IIS AppPool\DefaultAppPool). Обратите внимание: расположение (Locations) должно быть установлено на ваш локальный ПК, а не домен!
  4. Дайте права Чтение и Выполнение (Read & Execute). Нажмите ОК.

Сценарий 2: Ограничения ISAPI и CGI (ISAPI Restrictions)

Если ваш сайт использует внешние обработчики (например, PHP.exe, Python или модули 1С wsisapi.dll), IIS из соображений безопасности блокирует их выполнение по умолчанию.

  1. Откройте Диспетчер IIS (IIS Manager) на уровне СЕРВЕРА (верхний узел).
  2. Дважды кликните иконку Ограничения ISAPI и CGI (ISAPI and CGI Restrictions).
  3. Если вашего модуля (например, C:\php\php-cgi.exe) там нет — добавьте его.
  4. Убедитесь, что статус модуля установлен в Разрешено (Allowed). Если стоит 'Not Allowed', сайт будет выдавать 500.0.

Сценарий 3: Сбор детальной трассировки (FREB Tracing)

Если права в норме, а 500.0 остается — программист написал код с ошибкой. Чтобы доказать это (или найти сбойный модуль IIS), включите трассировку неудачных запросов.

  1. В IIS Manager выберите ваш сайт -> Справа в панели Actions нажмите Failed Request Tracing (Трассировка невыполненных запросов) -> Включить (Enable).
  2. Нажмите иконку Правила трассировки (Failed Request Tracing Rules) в центре -> Добавить правило.
  3. Укажите коды состояния (Status Codes) = 500.
  4. Попробуйте открыть сайт в браузере (получите ошибку 500).
  5. Зайдите в папку C:\inetpub\logs\FailedReqLogFiles\W3SVC... и откройте сгенерированный XML-файл (fr000001.xml) в Internet Explorer/Edge.
  6. Вы увидите потрясающий графический отчет. Красным будет подсвечен точный модуль (например, `RewriteModule` или `ManagedPipelineHandler`) и точная причина сбоя (например, `2147942405` - Отказано в доступе).

Типовые ошибки администраторов

  • Поиск причины 500.0 в браузере (RemoteOnly): В целях безопасности IIS не показывает детальный Stack Trace с ошибками кода (желтый экран) внешним пользователям. Чтобы увидеть реальную ошибку, зайдите на сам сервер по RDP, откройте браузер локально и перейдите на http://localhost. Вы увидите настоящую причину сбоя (например, SQL Timeout).
Веб-сервисы и 1С-WEB постоянно падают с серверными ошибками (HTTP 500)?
Траблшутинг IIS и анализ логов FREB требует DevOps-квалификации. Возьмем вашу веб-инфраструктуру на системную поддержку: проанализируем трассы приложений, устраним узкие места (I/O, SQL-таймауты, нехватку прав ACL), настроим Application Pools и гарантируем 100% аптайм корпоративных сайтов.
💡 Практика специалистов: Если 500.0 (Internal Server Error) возникает при попытке выполнить загрузку файла (File Upload) на сайт, проблема в 99% случаев кроется в лимите Request Filtering. По умолчанию IIS жестко блокирует любые HTTP-запросы (POST) размером более 30 МБ (maxAllowedContentLength). Зайдите в 'Фильтрация запросов' -> 'Изменить параметры' и увеличьте лимит до нужного размера.

Частые вопросы (FAQ)

Почему 500.0 появляется после обновления PHP?

Вы изменили путь к бинарнику php-cgi.exe (например, обновили с 7.4 на 8.1), но забыли обновить путь в разделе 'Сопоставления обработчиков' (Handler Mappings) в IIS для вашего сайта. IIS обращается к старому удаленному файлу и выдает 500.0.

Поможет ли перевод пула в 'Классический' (Classic) режим?

Да, если ваш сайт (или ISAPI-плагин) написан 15 лет назад и не поддерживает Интегрированный конвейер (Integrated Pipeline) современного IIS. Для современного ПО (ASP.NET MVC, .NET Core) всегда используйте Integrated.

Что означает HRESULT 0x80070005 в XML отчете FREB?

Это стандартный Win32 код 'Access Denied' (Отказано в доступе). Он подтверждает 'Сценарий 1' — у виртуальной учетной записи пула (или у IUSR, если это анонимный доступ) нет прав NTFS на чтение файла в wwwroot.

Влияют ли 32-разрядные приложения на 500.0?

Да. Если ваш модуль (ISAPI.dll) является 32-битным (x86), а пул работает в 64-битном режиме (x64), модуль не сможет загрузиться в память. Включите 'Enable 32-Bit Applications = True' в настройках пула.

Как сбросить IIS полностью для применения настроек?

Откройте командную строку (CMD) от имени администратора и выполните 'iisreset'. Это жестко перезапустит все службы W3SVC, пулы и сбросит кэш конфигурации (applicationHost.config).

Полезные материалы
Рекомендуем