При публикации информационной базы 1С на веб-сервере IIS пользователи часто сталкиваются с ситуацией, когда конфигуратор 1С сообщает об успешном обновлении публикации ("Публикация обновлена"), но фактически в браузере веб-сервисы не отображаются или, при корректном запросе, система начинает требовать авторизацию. Рассмотрим подробно, как диагностировать и устранить эти проблемы.
Прежде всего, давайте убедимся, что все базовые шаги по публикации выполнены корректно (в этом может помочь Публикатор 1С) и наш веб-сервер готов к работе с 1С.
Расширения ISAPIФильтры ISAPIЭти компоненты находятся в разделе "Разработка приложений" (Application Development) при добавлении ролей и компонентов IIS. Мы должны проверить их наличие.
iisreset в командной строке, запущенной от имени администратора. Для тех, кто предпочитает альтернативные веб-серверы, существует автоматизированный установщик Apache.Корректная работа веб-сервисов 1С во многом зависит от правильной настройки пула приложений (Application Pool), который обслуживает наше опубликованное приложение.
wsisapi.dll, то параметр "Разрешены 32-разрядные приложения" (Enable 32-bit Applications) в расширенных настройках пула приложений (например, DefaultAppPool или созданного для 1С) должен быть установлен в False. Если же по какой-то причине мы используем 32-разрядный модуль на 64-разрядной ОС, то этот параметр должен быть установлен в True. В нашем случае, с 1С8.3 x64, мы должны выставить False.Чтобы IIS понимал, как обрабатывать запросы к файлам 1С (например, *.1cws для веб-сервисов), необходимо настроить сопоставления обработчиков.
*.1cws и *.1crs (для HTTP-сервисов) добавлены отдельные сопоставления обработчиков. Эти сопоставления должны указывать на файл wsisapi.dll вашей версии платформы 1С. Пример пути: C:\Program Files\1cv8\8.3.18.1334\bin\wsisapi.dll (путь должен соответствовать вашей установленной версии).wsisapi.dll был корректным и соответствовал установленной версии платформы 1С. При обновлении платформы этот путь может измениться, и его необходимо актуализировать вручную в настройках IIS или переопубликовать базу из конфигуратора, чтобы 1С обновил эти настройки.Некорректные права доступа — одна из наиболее частых причин проблем с публикацией и работой 1С на IIS.
IUSR и группы IIS_IUSRS для папок C:\Program Files\1cv8 и C:\inetpub\wwwroot. Это хороший старт.IIS_IUSRS права на чтение и выполнение для каталога с информационной базой 1С. Если база является файловой, то требуются также права на изменение для этой папки, поскольку веб-серверу необходимо будет записывать данные в файлы базы. Если база клиент-серверная, то доступ к файлам на сервере СУБД будет осуществлять сервер 1С, но все равно, временные файлы могут создаваться, и дополнительные права не помешают.ApplicationPoolIdentity, которая является частью группы IIS_IUSRS. Поэтому предоставление прав IIS_IUSRS обычно достаточно. Если пул приложений настроен на работу под другой учетной записью (например, доменной), то именно этой учетной записи должны быть предоставлены все необходимые права.default.vrd и его содержимоеФайл default.vrd является ключевым для публикации 1С на веб-сервере. Он описывает, какие сервисы и каким образом опубликованы.
В нашем случае, содержимое default.vrd выглядит следующим образом:
[vrd]
Проанализируем этот файл:
http://v8.1c.ru/8.2/virtual-resource-system: Несмотря на то, что используется платформа 8.3, в файле default.vrd может быть указано пространство имен 8.2. Это нормальное поведение 1С, поскольку сама структура файла default.vrd описана в документации для платформы 8.3 и является универсальной. Это не является ошибкой.: Мы видим, что в этом блоке перечислены множество веб-сервисов, включая InterfaceVersion, EnterpriseDataExchange и другие. Это подтверждает, что веб-сервисы фактически опубликованы из 1С и их описание присутствует в конфигурационном файле — для этого подойдёт организация обмена через веб-сервисы и COM.base="/Demo": Этот атрибут указывает базовый URL для нашего опубликованного приложения, в данном случае /Demo. Это важная часть для формирования корректных адресов.ib="Srvr="1CDEV";Ref="dev2";": Убедимся, что параметры сервера 1С (Srvr) и имя информационной базы (Ref) указаны верно. Ошибки здесь могут привести к тому, что 1С-сервер не сможет подключиться к базе.Когда мы убедились, что приложение опубликовано и файл default.vrd корректен, следующим шагом будет проверка доступности веб-сервисов и решение вопросов с авторизацией.
http://localhost/Demo/ru_RU/, то веб-сервисы обычно доступны по следующему пути:
http://localhost/Demo/ws/ИмяВебСервиса.1cws
Например, для веб-сервиса InterfaceVersion корректным адресом будет:
http://localhost/Demo/ws/InterfaceVersion.1cws
Чтобы получить WSDL-описание веб-сервиса, которое является признаком его доступности, мы можем добавить ?wsdl в конец адреса:
http://localhost/Demo/ws/InterfaceVersion.1cws?wsdl
Если по этому адресу мы получаем XML-файл с описанием сервиса (WSDL), значит, веб-сервис успешно опубликован и доступен, и проблема перемещается в плоскость авторизации.
Анонимная проверка подлинности (Anonymous Authentication) включена. Если она отключена, мы включаем ее.default.vrd: В файле default.vrd можно указать пользователя и пароль для подключения к информационной базе. Например:
ib="Srvr="1CDEV";Ref="dev2";Usr="ВебПользователь";Pwd="Пароль";"
Хотя технически это возможно, мы не рекомендуем указывать учетные данные в открытом виде в конфигурационном файле для боевых систем из соображений безопасности. Гораздо лучше настраивать анонимную проверку подлинности в IIS и затем управлять доступом к данным в самой 1С, либо использовать механизмы авторизации на стороне клиента, который обращается к веб-сервису.
Если после всех этих шагов проблема остается, мы можем прибегнуть к дополнительным инструментам IIS.
Следуя этим шагам, мы можем системно подойти к диагностике и устранению проблем при публикации веб-сервисов 1С на IIS, начиная от базовой доступности и заканчивая тонкой настройкой авторизации.