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

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

После публикации файловой информационной базы 1С на веб-сервере IIS пользователи часто сталкиваются с проблемой, когда стандартные сервисы 1С, например, «1С-проверка контрагентов», перестают функционировать. При этом прямой доступ к той же файловой базе продолжает работать без сбоев. Разберем эту ситуацию подробно и выясним, почему так происходит, а также как можно устранить данную проблему.

Анализируем архитектуру: трехзвенная система

Когда вы работаете с файловой базой 1С напрямую, все операции, включая обращения к внешним веб-сервисам, выполняются от имени пользователя, который запустил клиентское приложение 1С:Предприятия. Этот пользователь, как правило, имеет прямой доступ к интернету со своего рабочего места.

Ситуация кардинально меняется при публикации базы на веб-сервере, таком как IIS. В этом случае мы переходим к так называемой трехзвенной архитектуре: клиентвеб-серверфайловая база. Весь серверный код 1С, включая вызовы внешних веб-сервисов (например, к assessment.1c.ru), теперь выполняется не на компьютере пользователя, а на компьютере, где установлен и запущен веб-сервер. Это критически важное различие, поскольку именно среда и права веб-сервера определяют доступность внешних ресурсов.

Диагностика проблемы: что показывают логи?

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

Из журнала регистрации:


При обращении по URL: Подключение проводится из файловой информационной базы на веб-сервере . Сервер assessment.1c.ru не доступен по причине: - неполадки у интернет-провайдера; - подключение к серверу блокирует межсетевой экран, антивирусная программа или другое программное обеспечение; - сервер отключен или на техническом обслуживании.

Из журнала диагностики:


Выполняется проверка доступности сервера. Описание диагностируемой ошибки см. в следующем сообщении журнала. Параметры прокси-сервера в ИБ не указаны (используются системные настройки прокси).
1) Удаленный сервер assessment.1c.ru не доступен:
> ping assessment.1c.ru -n 4 -w 1000
Pinging assessment.1c.ru [185.12.155.130] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 185.12.155.130:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
2) Удаленный сервер 1c.com доступен:
> ping 1c.com -n 4 -w 1000
Pinging 1c.com [18.184.212.59] with 32 bytes of data:
Reply from 18.184.212.59: bytes=32 time=73ms TTL=46
Reply from 18.184.212.59: bytes=32 time=79ms TTL=46
Reply from 18.184.212.59: bytes=32 time=72ms TTL=46
Reply from 18.184.212.59: bytes=32 time=73ms TTL=46
Ping statistics for 18.184.212.59:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 72ms, Maximum = 79ms, Average = 74ms

Эти сообщения четко указывают на проблему с сетевым доступом с компьютера, на котором запущен веб-сервер. Важно отметить, что в приведенном примере ping к assessment.1c.ru завершается неудачей, в то время как ping к 1c.com проходит успешно. Это может свидетельствовать о специфической блокировке или маршрутизации (чтобы проверить это, можно протестировать выполнение запросов вручную), но чаще всего проблема кроется в настройках самого веб-сервера.

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

Основные причины и их решения

Выясним причины, по которым веб-сервис 1С не может получить доступ к внешним ресурсам:

  1. Права доступа и учетная запись пула приложений IIS

    Одна из самых частых причин заключается в том, что учетная запись, от имени которой работает пул приложений IIS, имеет ограниченные права или не имеет доступа в интернет. Когда вы запускаете 1С напрямую, вы используете свои пользовательские права. Однако веб-сервер IIS запускает процессы пула приложений под специальными учетными записями, такими как ApplicationPoolIdentity, Network Service, Local Service или конкретный пользователь Windows.

    Проанализируем ситуацию: Веб-сервер IIS запускает процессы, которые выполняют код 1С. Эти процессы пула приложений работают не от имени интерактивного пользователя (который вошел в систему), а от имени специальной учетной записи пула приложений. У этих учетных записей могут быть другие сетевые политики, ограничения брандмауэра или отсутствие необходимых прав для доступа к внешним ресурсам через прокси-сервер.

    Что нам следует сделать:

    1. Определить учетную запись пула приложений: В "Диспетчере служб IIS" перейдите к "Пулы приложений", найдите пул, который используется для вашей опубликованной базы 1С. В свойствах пула в разделе "Модель процесса" -> "Удостоверение" (Identity) мы увидим, какая учетная запись используется. Чаще всего это ApplicationPoolIdentity или Network Service.

    2. Предоставить права доступа к сети:

      • Если используется ApplicationPoolIdentity, это виртуальная учетная запись. Ее права соответствуют учетной записи "Компьютер", и доступ к сети обычно есть. Однако, если для доступа в интернет требуется авторизация на прокси, ApplicationPoolIdentity может не пройти ее без дополнительных настроек.
      • Если используется Network Service, это также встроенная учетная запись с ограниченными правами.
      • Рекомендуемое решение: Мы можем изменить удостоверение пула приложений на конкретную учетную запись пользователя Windows, которая имеет необходимые права доступа в интернет. Создайте отдельного пользователя Windows (например, IISUser1C), дайте ему необходимые права на каталоги с базой 1С и платформой (C:\Program Files\1Cv8\ или C:\Program Files (x86)\1Cv8\), а затем укажите эту учетную запись в качестве удостоверения для пула приложений 1С. Убедитесь, что этот пользователь может выйти в интернет через браузер или командой ping из командной строки, запущенной от его имени.
    3. Проверить права на каталоги: Убедитесь, что у группы IIS_IUSRS (или у пользователя, под которым работает пул) есть права на чтение, запись и выполнение в каталоге с платформой 1С и в каталоге с файловой информационной базой.

  2. Настройки прокси-сервера

    Если для доступа в интернет используется прокси-сервер, необходимо убедиться, что эти настройки корректно применены для учетной записи, под которой работает IIS. Сервер 1С:Предприятия может использовать системные настройки прокси (которые обычно берутся из Internet Explorer) или иметь свои собственные настройки.

    Что нам следует сделать:

    1. Настройка прокси для учетной записи IIS: Если пул приложений IIS работает под определенной учетной записью пользователя Windows, мы должны войти в систему под этой учетной записью и настроить параметры прокси в "Свойствах обозревателя" (Internet Options) Windows.

    2. Использование файла inetcfg.xml: Для ручной настройки прокси-сервера непосредственно для 1С можно использовать файл inetcfg.xml. Этот файл имеет приоритет над системными настройками и может быть полезен, если прокси требует авторизации. Создайте или отредактируйте файл inetcfg.xml в каталоге CONF исполняемых файлов 1С:Предприятие (например, C:\Program Files\1Cv8\8.3.18.1289\conf\inetcfg.xml). Если такого файла нет, мы можем создать его. Пример содержимого inetcfg.xml:

      
      
      
          
              proxy_username
              proxy_password
          
          
              
      localhost
      192.168.0.0/16

      Замените proxy.example.com, 8080, proxy_username и proxy_password на свои реальные значения. Раздел no_proxy_for используем для указания адресов, к которым не нужно использовать прокси.

    3. Настройки прокси для .NET приложений на IIS: Веб-приложения на IIS могут требовать добавления раздела defaultProxy в файл web.config для корректной работы через прокси-сервер, особенно если прокси требует авторизации. Файл web.config находится в корневом каталоге публикации 1С на IIS. Пример добавления в web.config:

      
      
          
              
              
                  
              
              
          
      
      

      Убедитесь, что proxyaddress и bypasslist соответствуют вашей инфраструктуре.

  3. Брандмауэр (Firewall) и антивирусное ПО

    Даже если прямой доступ к интернету с сервера имеется, брандмауэр Windows или сторонний антивирус может блокировать исходящие соединения именно от процесса IIS или от определенной учетной записи. Многие администраторы настраивают правила брандмауэра таким образом, чтобы ограничить исходящий трафик от серверных служб, что может быть причиной проблемы.

    Что нам следует сделать:

    1. Проверить правила брандмауэра: В "Брандмауэре Защитника Windows" (Windows Defender Firewall) нам следует проверить "Правила для исходящих подключений". Мы ищем правила, которые могут блокировать доступ к assessment.1c.ru (IP-адрес 185.12.155.130) или к процессам w3wp.exe (процесс рабочего пула IIS) или исполняемому файлу платформы 1С. Убедитесь, что для этих процессов разрешены исходящие соединения по HTTP/HTTPS (порты 80 и 443).

    2. Временно отключить для диагностики: Для целей диагностики мы можем временно отключить "Брандмауэр Защитника Windows" или сторонний антивирус/файрвол. Если после этого сервисы 1С заработают, значит, проблема именно в блокировке. В таком случае мы должны добавить необходимые правила для разрешения исходящих соединений.

    3. Проверка сетевых политик: В корпоративных сетях часто применяются групповые политики или сетевые фильтры, которые могут влиять на исходящий трафик с серверов. Мы должны проконсультироваться с сетевыми администраторами для проверки этих политик.

  4. Проблемы с установкой и компонентами IIS

    Корректная работа 1С на IIS требует установки определенных компонентов IIS и правильной регистрации модулей расширения 1С.

    Что нам следует сделать:

    1. Проверить установленные компоненты IIS: Убедитесь, что в "Управлении сервером" -> "Роли и компоненты" для роли "Веб-сервер (IIS)" установлены следующие компоненты:

      • "Веб-сервер" -> "Общие функции HTTP" -> "Статическое содержимое", "Документ по умолчанию".
      • "Веб-сервер" -> "Разработка приложений" -> "Расширения ISAPI" (ISAPI Extensions) и "Фильтры ISAPI" (ISAPI Filters). Эти компоненты критически важны для работы 1С.
      • "Веб-сервер" -> "Средства управления" -> "Консоль управления IIS".
    2. Установить и зарегистрировать модули расширения 1С: После установки платформы 1С на сервер, где будет размещен веб-сервер, мы должны убедиться, что был установлен компонент "Модули расширения веб-сервера". Если он не был установлен, запустите инсталлятор платформы 1С снова и добавьте этот компонент.

      В некоторых случаях может потребоваться ручная регистрация модулей расширения 1С для IIS. Для этого мы должны запустить утилиту webinst.exe из каталога bin установленной платформы 1С от имени администратора. Например:

      
      "C:\Program Files\1Cv8\8.3.18.1289\bin\webinst.exe" -publish -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "File=C:\1C_Bases\BaseName" -descr "My 1C Base" -N -pwd
      

      Или, что более актуально для уже опубликованной базы на IIS, просто убедиться, что модули зарегистрированы. Если веб-публикация делалась из конфигуратора, обычно это происходит автоматически. Мы должны проверить журнал событий Windows на предмет ошибок при загрузке модуля wsisapi.dll.

    3. Сопоставление обработчиков (Handler Mappings): В "Диспетчере служб IIS" для опубликованной базы 1С мы должны проверить "Сопоставления обработчиков". Должны быть корректно настроены сопоставления для расширений *.1cws и *.1crs, указывающие на файл wsisapi.dll из каталога bin платформы 1С. Убедитесь, что пути правильные и разрешения для модулей ISAPI установлены.

Дополнительные рекомендации

Помимо основных причин, рассмотрим несколько дополнительных шагов, которые могут помочь в решении проблемы:

  1. Перезапуск IIS: После внесения любых изменений в конфигурацию IIS, сетевые настройки или права доступа, мы должны выполнить перезапуск службы "World Wide Web Publishing Service" (IIS). Это гарантирует применение всех изменений.

  2. Тестирование локального доступа: Мы должны убедиться, что опубликованная база доступна хотя бы локально через браузер по адресу http://localhost/ИмяПубликации/. Если и локальный доступ не работает, это указывает на более фундаментальные проблемы с публикацией 1С на IIS, не связанные с внешним доступом.

  3. Рассмотрение Apache: Если проблемы с IIS остаются неразрешенными, и вы имеете возможность, мы можем попробовать опубликовать базу на веб-сервере Apache. Некоторые администраторы предпочитают Apache на Windows-системах за его гибкость настройки и иногда меньшее потребление ресурсов, а также иной подход к правам доступа, что может помочь обойти специфические сложности с IIS.

В заключение, проблема с доступом к сервисам 1С после публикации базы на IIS практически всегда сводится к различиям в сетевом окружении и правах доступа между процессом, запущенным напрямую пользователем, и процессом, запущенным веб-сервером. Нам необходимо тщательно проверить конфигурацию IIS, настройки сетевого доступа для учетной записи пула приложений, правила брандмауэра и прокси-сервера. Последовательная диагностика и устранение каждой потенциальной причины позволит восстановить работоспособность всех сервисов 1С.

← На главную