Расширения ISAPI в IIS для публикации 1С: установка, разрешение «Выполнение» и проверка

· 10 мин

Содержание

Чтобы включить ISAPI DLL для 1С, нужно сделать три вещи: установить в Windows компонент IIS «Расширения ISAPI», опубликовать базу из Конфигуратора и в «Сопоставлениях обработчиков» IIS разрешить функцию «Выполнение» для библиотеки wsisapi.dll. Если хотя бы один шаг пропущен, браузер вместо базы покажет ошибку 404.3, 403 или 500.

Частое заблуждение — что ISAPI нужно «включать» в самой 1С. В программе такой галочки нет. Платформа лишь кладёт свой модуль веб-расширения wsisapi.dll в каталог bin, а разрешать его запуск и интеграцию с веб-сервером приходится на стороне IIS. Инструкция ниже — для платформы 8.3 и IIS 10 на Windows Server 2016 и новее или Windows 10/11.

Что такое ISAPI DLL и зачем она нужна 1С

ISAPI — программный интерфейс веб-сервера IIS. Через него IIS передаёт входящий HTTP-запрос внешней библиотеке и возвращает клиенту её ответ. У 1С такая библиотека называется wsisapi.dll и лежит рядом с исполняемыми файлами платформы, например в C:\Program Files\1cv8\8.3.25.1374\bin\.

Через этот модуль работает всё, что 1С отдаёт по HTTP:

  • 🌐 веб-клиент — вход в базу из браузера без установки толстого или тонкого клиента ;
  • 🔗 тонкий клиент по HTTP-подключению — удобно для удалённых офисов без VPN;
  • 🧩 веб-сервисы SOAP (/ws/) — обмен с сайтами, CRM, другими базами 1С;
  • 📡 HTTP-сервисы (/hs/) — REST-интеграции, приём заказов, обработка вебхуков;
  • 📊 стандартный интерфейс OData (/odata/) — выгрузка данных в BI-системы;
  • 📱 мобильные приложения и мобильный клиент 1С, которые синхронизируются через публикацию.

Без включённых расширений ISAPI IIS не знает, что делать с запросом к публикации, и отдаёт ошибку вместо данных.

Что подготовить до начала настройки

Перед настройкой проверьте пять условий. Каждое из них потом превращается в отдельную ошибку, если его пропустить.

Что проверитьГде смотретьЗачем
Права администратора WindowsУчётная запись, под которой работаетеБез них публикация не запишет файлы в C:\inetpub\wwwroot
Установлен компонент «Модули расширения веб-сервера»Программы и компоненты → платформа 1С → ИзменитьБез него в каталоге bin нет wsisapi.dll
Разрядность платформыПуть установки: Program Files — 64 бита, Program Files (x86) — 32 битаОт неё зависит настройка пула приложений
Тип базыСтрока подключения в окне запускаДля файловой базы нужны права пула на её папку
Свободен порт 80 (или 443)netstat -ano | findstr :80Порт может держать другой веб-сервер или Skype старых версий

Если на сервере стоит несколько версий платформы, публикуйте той версией, которой работают пользователи. Веб-клиент и тонкий клиент по HTTP требуют совпадения версии клиента и модуля веб-расширения.

Как доустановить модуль веб-сервера 1С

Если wsisapi.dll в каталоге bin нет, запустите установщик платформы той же версии (setup.exe), выберите «Изменить» и отметьте компонент «Модули расширения веб-сервера». Переустанавливать платформу целиком не нужно.

Пошаговая инструкция: как включить ISAPI DLL для 1С

Порядок важен: сначала компоненты IIS, потом публикация, потом разрешения. Если опубликовать базу до установки расширений ISAPI, IIS отвергнет секцию обработчиков в web.config, и публикацию придётся переделывать.

Шаг 1. Установить IIS с расширениями ISAPI

На Windows Server:

  1. Откройте «Диспетчер серверов» → «Управление» → «Добавить роли и компоненты».
  2. Отметьте роль «Веб-сервер (IIS)».
  3. В списке служб роли раскройте «Веб-сервер» → «Разработка приложений».
  4. Отметьте «Расширения ISAPI» и «Фильтры ISAPI».
  5. В разделе «Средства управления» оставьте «Консоль управления IIS».
  6. Нажмите «Установить» и дождитесь окончания.

На Windows 10/11 то же самое делается через Панель управления → Программы → Включение или отключение компонентов Windows → Службы IIS → Службы Интернета → Компоненты разработки приложений.

Быстрее — одной командой PowerShell от имени администратора.

Для Windows Server:

Install-WindowsFeature Web-Server, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Mgmt-Console

Для Windows 10/11:

Enable-WindowsOptionalFeature -Online -All -FeatureName IIS-WebServerRole, IIS-ISAPIExtensions, IIS-ISAPIFilter, IIS-ManagementConsole

После установки откройте в браузере http://localhost/. Должна появиться стартовая страница IIS — значит, веб-сервер работает.

Шаг 2. Опубликовать базу на веб-сервере

  1. Запустите Конфигуратор от имени администратора (правый клик по ярлыку → «Запуск от имени администратора»). Без этого кнопка «Опубликовать» выдаст ошибку доступа.
  2. Откройте базу и выберите Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации латиницей без пробелов, например buh. Оно станет частью адреса: http://сервер/buh/.
  4. Веб-сервер — «Internet Information Services», каталог — C:\inetpub\wwwroot\buh.
  5. Отметьте нужное: веб-клиент, веб-сервисы, HTTP-сервисы, OData.
  6. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.

Платформа создаст в каталоге два файла: default.vrd с параметрами подключения к базе и web.config, где прописан обработчик для wsisapi.dll.

Если Конфигуратор недоступен (например, на сервере без интерфейса), используйте утилиту webinst.exe из того же каталога bin:

cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

Для файловой базы строка подключения будет вида -connstr "File=""D:\Bases\Buh"";". Полный список ключей выводит webinst.exe без параметров.

Шаг 3. Разрешить выполнение ISAPI-dll в сопоставлениях обработчиков

Это главный шаг, который чаще всего пропускают. Именно о нём говорят, когда пишут «включите ISAPI-dll».

  1. Откройте «Диспетчер служб IIS» (inetmgr).
  2. Слева раскройте Сайты → Default Web Site → buh.
  3. Дважды щёлкните «Сопоставления обработчиков».
  4. Найдите строку с исполняемым файлом wsisapi.dll (у публикации 1С она обычно называется «1C Web-service Extension»).
  5. Если её состояние «Отключено», справа нажмите «Изменить разрешения функции…».
  6. Отметьте «Выполнение» (вместе с «Чтением» и «Сценарием») и нажмите ОК.

Строка станет активной. Проверьте, что путь в ней указывает на wsisapi.dll той версии платформы, которой публиковали. После обновления платформы путь остаётся старым — об этом ниже.

Шаг 4. Настроить пул приложений под разрядность платформы

  1. В диспетчере IIS откройте «Пулы приложений».
  2. Выберите пул, в котором работает сайт (по умолчанию DefaultAppPool).
  3. Справа — «Дополнительные параметры».
  4. Параметр «Разрешить 32-разрядные приложения»: True для 32-битной платформы, False для 64-битной.

Смена параметров пула перезапускает его рабочий процесс w3wp.exe. Все, кто сейчас работает через веб-клиент или HTTP-подключение, потеряют сеанс и несохранённые данные. Делайте это вне рабочего времени или предупредите пользователей.

Шаг 5. Выдать права на файлы

Рабочий процесс IIS работает от имени пула, а не от вашего пользователя. Ему нужен доступ:

  • 📁 к каталогу публикации C:\inetpub\wwwroot\buh — чтение (обычно уже есть у группы IIS_IUSRS);
  • ⚙️ к каталогу платформы C:\Program Files\1cv8\ — чтение и выполнение;
  • 🗄️ для файловой базы — к папке базы с файлом 1Cv8.1CD: изменение для IIS_IUSRS или учётной записи пула.

Для клиент-серверной базы права на папку не нужны: модуль подключается к кластеру 1С по сети, а доступ к данным проверяет сам сервер 1С.

Как проверить, что ISAPI-модуль работает

Начинайте с простого адреса и двигайтесь к сложным. Так сразу понятно, на каком уровне сломано.

Что открытьЧто должно быть
http://localhost/Стартовая страница IIS
http://localhost/buh/Окно входа веб-клиента 1С
http://localhost/buh/ws/ИмяСервиса?wsdlXML-описание веб-сервиса
http://localhost/buh/hs/корневой-url/методОтвет HTTP-сервиса
http://localhost/buh/odata/standard.odata/XML со списком опубликованных объектов OData

Проверяйте сначала на самом сервере (localhost), затем с другого компьютера по имени или IP. Если локально работает, а снаружи нет — дело в брандмауэре Windows или сетевом оборудовании, а не в ISAPI.

Чтобы подключить тонкий клиент, добавьте базу в список и выберите вариант «На веб-сервере» с адресом http://srv1c/buh/.

Где искать подробности, если что-то не так:

  • 📝 журналы IIS — C:\inetpub\logs\LogFiles\W3SVC1\: в каждой строке код ответа и подкод (например, 404 3);
  • 🪟 «Просмотр событий» → «Журналы Windows» → «Приложение»: падения w3wp.exe и ошибки загрузки модуля;
  • 🔍 подробная страница ошибки IIS: при открытии адреса на самом сервере IIS показывает модуль, обработчик и вероятную причину.

Ошибки при включении ISAPI DLL и что с ними делать

Код ответа IIS почти всегда указывает на конкретный пропущенный шаг. Выберите свой симптом:

Диагностика: выберите симптом

После обновления платформы публикация перестала работать

Классическая ловушка. При публикации путь к wsisapi.dll записывается в web.config с номером версии. Обновили платформу, удалили старую — IIS ищет библиотеку по несуществующему пути и отдаёт 500.0.

Решение — переопубликовать базу новой версией Конфигуратора или поправить путь в web.config вручную. Строка выглядит примерно так:

<add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule"
     scriptProcessor="C:\Program Files\1cv8\8.3.25.1374\bin\wsisapi.dll"
     resourceType="Unspecified" requireAccess="None" />

После правки перезапустите сайт командой iisreset — она обрывает сеансы всех пользователей веб-публикаций на этом сервере, поэтому выполняйте её вне рабочего времени.

Как ускорить работу публикации через ISAPI

Сам модуль wsisapi.dll лёгкий, медленнее всего обычно не он, а то, как построена связка. Что даёт заметный эффект:

  1. Клиент-серверная база вместо файловой. Через IIS к файловой базе обращается процесс w3wp.exe, и при 5–10 одновременных пользователях начинаются блокировки. Для веб-доступа больше чем для пары человек нужен сервер 1С.
  2. IIS рядом с сервером 1С. Каждый запрос веб-клиента — несколько обращений к кластеру. Если IIS и сервер 1С в разных сетях с задержкой 20–30 мс, интерфейс заметно тормозит.
  3. Повторное использование сеансов для веб-сервисов. Без него каждый вызов SOAP- или HTTP-сервиса открывает новый сеанс 1С и тратит время на вход. В default.vrd для точки веб-сервиса или HTTP-сервиса задаётся атрибут reuseSessions и параметры пула сеансов (sessionMaxAge, poolSize, poolTimeout). Значения подбирайте под нагрузку и проверяйте на тестовой публикации.
  4. Настройка перезапуска пула. По умолчанию IIS перезапускает рабочий процесс раз в 1740 минут (29 часов) и после 20 минут простоя. Перезапуск в рабочее время рвёт сеансы веб-клиента. Перенесите плановый перезапуск на ночь: в «Дополнительных параметрах» пула задайте конкретное время в разделе «Перезапуск».
  5. HTTPS и сжатие. Для работы через интернет включите HTTPS (привязка сертификата на сайте) и сжатие динамического содержимого в IIS — трафик веб-клиента хорошо сжимается.

Отдельный пул приложений под каждую крупную публикацию упрощает жизнь: перезапуск одного пула не задевает пользователей других баз.

Чем заменить ISAPI и IIS для интеграции с 1С

IIS — не единственный способ отдать 1С по HTTP. Варианты зависят от ОС и задачи.

ВариантКогда подходитОграничения
IIS + wsisapi.dllWindows-сервер, интеграция с доменом, привычное администрированиеНастройка разрядности и прав, перепубликация при смене версии
Apache 2.4 + модуль wsap24.dll (в Linux — wsap24.so)Linux-серверы или если IIS не используютНужно править httpd.conf, публикация от имени администратора
Автономный сервер ibsrvТестовые стенды, небольшие внутренние сервисы, платформа 8.3.14 и новееОтдельный процесс без привычного веб-сервера, свои правила запуска
COM-соединение / внешнее соединениеОбмен между базами 1С и программами на одном Windows-компьютереНе работает по HTTP, требует установленной платформы у вызывающей стороны
Обмен файлами (XML, JSON, CSV)Пакетная выгрузка раз в сутки, когда онлайн не нуженНет мгновенного ответа, нужен регламент и контроль загрузки

Для REST-интеграций с сайтом или CRM разница между IIS и Apache для 1С невелика: HTTP-сервисы работают одинаково. Выбор обычно определяет то, на какой ОС уже стоит сервер.

Публикация 1С через IIS готова к работе
Выполнено: 0 / 8

Частые вопросы по ISAPI DLL в 1С

Нужно ли покупать отдельную лицензию на веб-сервер для 1С?
Отдельной лицензии на модуль ISAPI нет. Но каждый пользователь веб-клиента или тонкого клиента по HTTP занимает клиентскую лицензию 1С так же, как при обычном входе. IIS входит в Windows и бесплатен.
Можно ли опубликовать на одном IIS базы разных версий платформы?
Можно, если каждую публикацию поместить в свой пул приложений и указать в её web.config свой путь к wsisapi.dll. Один рабочий процесс не может загрузить две разные версии модуля.
Почему веб-клиент открывается, а веб-сервис выдаёт 404?
При публикации не отмечена галочка нужного веб-сервиса или HTTP-сервиса, либо в адресе ошибка в имени. Переопубликуйте базу с отмеченным сервисом и сверьте имя с тем, что задано в конфигурации.
Нужна ли платформа 1С на компьютере с IIS, если сервер 1С стоит отдельно?
Нужна: модуль wsisapi.dll — часть платформы, и он подключается к кластеру как клиент. Достаточно установить компонент «Модули расширения веб-сервера» той же версии, что и сервер 1С.
Как закрыть публикацию паролем Windows вместо пароля 1С?
Включите в IIS для публикации проверку подлинности Windows, а в свойствах пользователя 1С — аутентификацию операционной системы с привязкой к доменной учётной записи. Анонимный доступ к каталогу при этом отключите.