Почему IIS перестает работать с новой платформой 1С при обновлении и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обновлении технологической платформы 1С:Предприятие с достаточно старых версий (например, 8.3.9) на современные релизы (8.3.15, 8.3.17 и выше) системные администраторы часто сталкиваются с ситуацией, когда веб-сервер IIS перестает отдавать страницы, возвращая ошибку HTTP 500.0 — Internal Server Error. Ситуация осложняется тем, что возврат к старой версии wsisapi.dll моментально восстанавливает работоспособность, хотя все права и пути для новой версии вроде бы настроены верно. Разберем детально, почему так происходит и какие шаги необходимо предпринять для устранения этой проблемы.

Анализ архитектурных изменений в новых версиях платформы

Начиная с версии 8.3.15, компания 1С существенно обновила внутренние зависимости платформы. Рассмотрим основные причины, по которым новая библиотека wsisapi.dll может не загружаться в рабочий процесс IIS на операционных системах уровня Windows 7 или Windows Server 2008 R2:

  1. Поддержка алгоритма подписи SHA-2. Современные исполняемые файлы 1С подписаны сертификатами SHA-2. Старые операционные системы без специальных обновлений безопасности не могут проверить валидность этой подписи, из-за чего модуль wsisapi.dll просто блокируется системой безопасности как недоверенный.
  2. Зависимость от Microsoft Visual C++ Redistributable. Для работы модулей платформы 8.3.17 требуется пакет Microsoft Visual C++ 2015-2019. Если на сервере установлены только старые версии (например, 2008 или 2010), библиотека не сможет инициализироваться.
  3. Разрядность и изоляция пулов приложений. IIS не позволяет загружать в один и тот же рабочий процесс (w3wp.exe) библиотеки разных версий или разной разрядности.

Шаг 1. Проверка системных обновлений и подписей SHA-2

Проанализируем состояние операционной системы. Если вы используете Windows 7 или Windows Server 2008 R2, убедитесь, что установлены обновления KB4474419 и KB4490628. Именно они добавляют в систему поддержку SHA-2. Без них любая попытка зарегистрировать обработчик wsisapi.dll от версии 8.3.15 и выше будет приводить к ошибке 500, так как IIS не сможет «прочитать» модуль.

Шаг 2. Установка необходимых компонентов Visual C++

Выясним причину возможного отсутствия системных библиотек. Платформа 1С активно использует стандартные библиотеки C++. Для корректной работы расширения веб-сервера необходимо выполнить следующие действия:

Шаг 3. Изоляция пулов приложений и очистка обработчиков

Рассмотрим механизм работы пулов IIS. Одной из частых ошибок является использование одного и того же пула приложений для баз, опубликованных на разных версиях платформы. Выясним, как правильно настроить среду:

Для каждой версии платформы 1С создадим отдельный пул приложений. В настройках пула обратим внимание на параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications):

Проанализируем раздел «Ограничения ISAPI и CGI» на уровне всего сервера в диспетчере IIS. Удалим оттуда все старые записи, указывающие на несуществующие пути или старые версии wsisapi.dll. Оставим только ту версию, которую планируем использовать. После этого перейдем к настройкам конкретного сайта и проверим «Сопоставление обработчиков». Путь к wsisapi.dll должен строго соответствовать версии установленной платформы.

Шаг 4. Настройка прав доступа к служебным папкам

Посмотрим, какие права требуются для инициализации веб-компонентов. Ошибку 500 часто вызывает невозможность модуля 1С записать временные данные. Проверим права для пользователя, от имени которого запущен пул приложений (обычно это IIS AppPool\ИмяПула или IUSR):

  1. Дадим полные права (или хотя бы права на чтение и запись) на папку C:\Program Files\1cv8\номер_версии\bin (или x86 версию).
  2. Обязательно предоставим права на папку C:\ProgramData\1C\1cv8. В этой папке 1С хранит файл wsapvr.ini и другие служебные объекты, необходимые для работы веб-сервисов.

Шаг 5. Работа с файлом конфигурации публикации

Разберем структуру файла default.vrd, который создается при публикации базы. Иногда при обновлении в нем остаются некорректные ссылки. Откроем этот файл в текстовом редакторе. Его типичное содержимое выглядит так:


<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		base="/TestBase"
		ib="Srvr=&quot;ServerName&quot;;Ref=&quot;BaseName&quot;;">
	<standardOdata enable="true"
			reuseSessions="autouse"
			sessionMaxAge="20"
			poolSize="10"
			poolTimeout="5"/>
</point>

Убедимся, что в параметре ib указана корректная строка соединения. Если вы используете файловую базу, путь должен быть доступен для пользователя, под которым работает IIS.

Шаг 6. Глубокая диагностика с помощью Failed Request Tracing

Если вышеуказанные действия не помогли, воспользуемся инструментом трассировки неудачных запросов (FREB) в IIS. Это позволит нам точно увидеть, на каком этапе происходит сбой: при загрузке библиотеки (LoadLibrary) или внутри самой 1С. Рассмотрим алгоритм действий:

Если в логе мы увидим ошибку 0x8007007e (The specified module could not be found), это прямое подтверждение того, что системе не хватает какой-то зависимой DLL (например, из пакета Visual C++ или обновления Windows), несмотря на то, что сам файл wsisapi.dll находится на месте.

Резюме и рекомендации

Подведем итог. Проблема с версией 8.3.17 на IIS 7 чаще всего решается установкой обновлений безопасности для SHA-2 и актуальных пакетов Visual C++. Не забудем про «чистую» перепубликацию: вместо простого изменения пути к wsisapi.dll в настройках обработчика, лучше полностью удалить публикацию через Конфигуратор (запущенный от имени администратора) и создать её заново. Это позволит 1С корректно обновить все системные файлы в C:\inetpub\wwwroot и зарегистрировать необходимые компоненты в реестре IIS.

← На главную