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

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

При развертывании веб-клиента 1С:Предприятия на веб-сервере Microsoft Internet Information Services (IIS) администраторы нередко сталкиваются с ситуацией, когда файловая база открывается корректно, а база в режиме «клиент-сервер» зависает: в браузере отображается начальная заставка 1С с вращающимся индикатором, но форма авторизации и выбора пользователя так и не появляется. Проанализируем, почему возникает эта ошибка и как правильно настроить веб-сервер без выдачи избыточных прав администратора.

Причины зависания клиент-серверной базы при запуске в веб-клиенте

Выясним причину такого поведения веб-сервера. В файловом варианте расширение веб-сервера wsisapi.dll обращается напрямую к файлам базы данных 1Cv8.1CD. В клиент-серверном режиме архитектура взаимодействия существенно меняется:

  1. Ограничения стандартного пользователя IUSR: модуль расширения веб-сервера инициирует сетевое TCP-соединение с кластером 1С (порты 1540, 1541, 1560–1591), выполняет запись во временные системные каталоги (%TEMP%, C:\Windows\Temp) и считывает настройки платформы. Встроенная учетная запись IUSR по умолчанию изолирована от системных ресурсов, что приводит к блокировке или долгому ожиданию ответа.
  2. Несоответствие прав доступа на исполняемые файлы платформы: для инициализации библиотеки расширения рабочему процессу IIS необходим доступ на чтение и выполнение к каталогу платформы, где расположена используемая версия 1С:Предприятия.
  3. Проблемы с получением клиентской лицензии: веб-клиент не обращается к аппаратному ключу HASP на клиентском ПК. Лицензию должен предоставить сервер 1С либо веб-сервер. Если выдача лицензий сервером отключена, модуль пытается найти программные лицензии в каталогах C:\ProgramData\1C\licenses, куда у стандартного анонимного пользователя нет доступа.
  4. Несоответствие разрядности модуля ISAPI: при работе с 64-разрядным сервером 1С попытка задействовать 32-разрядную библиотеку без включения поддержки 32-битных приложений в пуле приводит к сбою загрузки нативных компонентов.

Рассмотрим по шагам безопасные и проверенные способы устранения неполадки.

Способ 1. Настройка прав доступа к каталогу платформы 1С

Разберем базовую настройку прав файловой системы. Службы IIS обращаются к модулю wsisapi.dll от имени группы IIS_IUSRS. Если прав на чтение и выполнение недостаточно, процесс зависает или завершается сбоем.

  1. Откроем проводник Windows и перейдем к каталогу с установленной платформой 1С (для x64-платформы: C:\Program Files\1cv8\8.3.X.XXXX\bin, для x86-платформы: C:\Program Files (x86)\1cv8\8.3.X.XXXX\bin).
  2. Нажмем правой кнопкой мыши на папку bin и перейдем в Свойства -> вкладка Безопасность.
  3. Нажмем кнопку Изменить, затем Добавить.
  4. В поле выбора объектов введем имя локальной группы IIS_IUSRS и подтвердим выбор.
  5. Назначим группе IIS_IUSRS разрешения «Чтение и выполнение» (Read & Execute), «Список содержимого папки» (List folder contents) и «Чтение» (Read).
  6. Применим изменения.

Способ 2. Переключение анонимной проверки подлинности на удостоверение пула

Назначение учетной записи локального администратора для анонимного входа, хотя и решает проблему с зависанием, создает критическую уязвимость в безопасности сервера. Вместо этого настроим работу через контекст встроенного удостоверения пула приложений.

  1. Откроем Диспетчер служб IIS (IIS Manager).
  2. В дереве подключений развернем узел сервера, перейдем в Сайты -> выберем опубликованное веб-приложение 1С.
  3. В центральной панели дважды нажмем на значок Проверка подлинности (Authentication).
  4. Выделим пункт Анонимная проверка подлинности (Anonymous Authentication) и в правой панели действий нажмем Изменить....
  5. В появившемся окне переключим радиокнопку с «Определенный пользователь» (IUSR) на «Удостоверение пула приложений» (Application pool identity).
  6. Нажмем ОК.

Теперь запрос веб-клиента обрабатывается от имени служебного виртуального аккаунта пула (например, IIS AppPool\DefaultAppPool), обладающего правами члена группы IIS_IUSRS.

Способ 3. Оптимизация параметров пула приложений IIS

Проанализируем параметры рабочего процесса IIS (w3wp.exe), чтобы исключить конфликты при взаимодействии с библиотеками платформы 1С:

  1. В диспетчере IIS перейдем в раздел Пулы приложений (Application Pools).
  2. Выберем пул, назначенный нашей опубликованной базе 1С, и нажмем Дополнительные параметры... (Advanced Settings).
  3. Найдем параметр Версия среды .NET CLR (.NET CLR Version) и установим значение Без управляемого кода (No Managed Code), так как интеграция 1С с IIS реализована через неуправляемый интерфейс ISAPI.
  4. В секции Модель процесса (Process Model) найдем параметр Загрузить профиль пользователя (Load User Profile) и переведем его в значение True. Это позволяет корректно инициализировать ветки реестра пользователя и локальные криптографические сервисы.
  5. Нажмем ОК и перезапустим пул приложений.

Способ 4. Проверка разрядности модуля wsisapi.dll и ограничений ISAPI

Если веб-сервер настроен под 64-разрядные процессы, убедимся, что публикация использует соответствующий бинарный файл.

  1. Перейдем в каталог физической публикации базы (по умолчанию C:\inetpub\wwwroot\ИмяБазы\) и откроем файл web.config в текстовом редакторе.
  2. Проверим путь к обработчику запросов в секции handlers. Для 64-битной платформы путь должен вести в каталог Program Files, а не Program Files (x86):
    
    <handlers>
        <add name="1C_Web-service_Extension" 
             path="*" 
             verb="*" 
             modules="IsapiModule" 
             scriptProcessor="C:\Program Files\1cv8\8.3.X.XXXX\bin\wsisapi.dll" 
             resourceType="Unspecified" 
             requireAccess="None" />
    </handlers>
    
  3. В диспетчере IIS перейдем на корневой узел сервера и откроем Ограничения ISAPI и CGI (ISAPI and CGI Restrictions).
  4. Убедимся, что путь к расширению указывает на правильный файл wsisapi.dll и для него установлен статус Разрешено (Allowed).

Способ 5. Проверка выдачи лицензий и сетевой связности с кластером

Завершающим шагом проверим настройки соединения с кластером серверов 1С:

  1. Откроем файл default.vrd в каталоге публикации базы и найдем строку подключения ib. Обратим внимание на параметр Srvr="ServerName".
  2. Проверим с сервера IIS разрешение сетевого имени хоста кластера 1С с помощью утилиты ping ServerName. Если IP-адрес не разрешается через DNS, пропишем соответствие в системном файле C:\Windows\System32\drivers\etc\hosts.
  3. Откроем консоль Администрирование серверов 1С:Предприятия, найдем опубликованную информационную базу и в ее свойствах проверим параметр Разрешить выдачу лицензий сервером 1С:Предприятия. Установим его в значение Да, чтобы клиент не зависал в попытках обнаружить локальный аппаратный или программный ключ.

Выполнив указанные шаги, мы восстановим нормальный запуск веб-клиента клиент-серверной базы без компрометации безопасности веб-сервера.

← На главную