При обновлении технологической платформы 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:
wsisapi.dll просто блокируется системой безопасности как недоверенный.Microsoft Visual C++ 2015-2019. Если на сервере установлены только старые версии (например, 2008 или 2010), библиотека не сможет инициализироваться.Проанализируем состояние операционной системы. Если вы используете Windows 7 или Windows Server 2008 R2, убедитесь, что установлены обновления KB4474419 и KB4490628. Именно они добавляют в систему поддержку SHA-2. Без них любая попытка зарегистрировать обработчик wsisapi.dll от версии 8.3.15 и выше будет приводить к ошибке 500, так как IIS не сможет «прочитать» модуль.
Выясним причину возможного отсутствия системных библиотек. Платформа 1С активно использует стандартные библиотеки C++. Для корректной работы расширения веб-сервера необходимо выполнить следующие действия:
Microsoft Visual C++ 2015-2019 Redistributable.x86. Если 64-битную — версию x64. В идеале на сервере должны присутствовать обе версии пакета, так как некоторые вспомогательные процессы 1С могут требовать иную разрядность.Рассмотрим механизм работы пулов IIS. Одной из частых ошибок является использование одного и того же пула приложений для баз, опубликованных на разных версиях платформы. Выясним, как правильно настроить среду:
Для каждой версии платформы 1С создадим отдельный пул приложений. В настройках пула обратим внимание на параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications):
C:\Program Files (x86)\1cv8\..., установите значение True.Проанализируем раздел «Ограничения ISAPI и CGI» на уровне всего сервера в диспетчере IIS. Удалим оттуда все старые записи, указывающие на несуществующие пути или старые версии wsisapi.dll. Оставим только ту версию, которую планируем использовать. После этого перейдем к настройкам конкретного сайта и проверим «Сопоставление обработчиков». Путь к wsisapi.dll должен строго соответствовать версии установленной платформы.
Посмотрим, какие права требуются для инициализации веб-компонентов. Ошибку 500 часто вызывает невозможность модуля 1С записать временные данные. Проверим права для пользователя, от имени которого запущен пул приложений (обычно это IIS AppPool\ИмяПула или IUSR):
C:\Program Files\1cv8\номер_версии\bin (или x86 версию).C:\ProgramData\1C\1cv8. В этой папке 1С хранит файл wsapvr.ini и другие служебные объекты, необходимые для работы веб-сервисов.Разберем структуру файла 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="ServerName";Ref="BaseName";">
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</point>
Убедимся, что в параметре ib указана корректная строка соединения. Если вы используете файловую базу, путь должен быть доступен для пользователя, под которым работает IIS.
Если вышеуказанные действия не помогли, воспользуемся инструментом трассировки неудачных запросов (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.