Развертывание веб-сервисов 1С:Предприятие на платформе Microsoft Internet Information Services (IIS) — это стандартная задача для интеграции систем, однако она часто сопровождается техническими сложностями. Чаще всего проблемы возникают из-за некорректной ручной правки конфигурационных файлов, несовпадения разрядности библиотек или ошибок в настройке прав доступа и аутентификации. В этой статье мы подробно разберем, как избежать «детских болезней» при публикации и что делать, если сервер выдает ошибки доступа.
Одной из первых проблем, с которой сталкиваются разработчики, является ошибка «Нераспознанный атрибут Path». Проанализируем причину: XML-конфигурация IIS чувствительна к регистру символов. В системных файлах web.config все атрибуты должны записываться со строчной буквы.
Если вы редактируете файл вручную, убедитесь, что секция обработчиков выглядит следующим образом:
<handlers>
<add name="1C_WebAPI"
path="*"
verb="*"
modules="IsapiModule"
scriptProcessor="C:\Program Files\1cv8\8.3.x.xxxx\bin\wsisapi.dll"
resourceType="Unspecified"
requireAccess="None" />
</handlers>
Однако мы крайне рекомендуем отказаться от ручного редактирования web.config. Рассмотрим правильный алгоритм публикации веб-сервиса через Конфигуратор:
При таком подходе платформа 1С самостоятельно сформирует корректный XML-файл, учитывая версию платформы и необходимые параметры модуля расширения веб-сервера.
После исправления конфигурации часто возникает следующая преграда: ошибка 401.2 Unauthorized. Она означает, что сервер не смог определить права пользователя для доступа к ресурсу. Выясним, как правильно настроить авторизацию, чтобы пользователи не видели назойливых окон ввода логина и пароля.
Разберем три способа решения этой ситуации:
1. Использование файла default.vrd для автоматического входа. Если вы хотите, чтобы веб-сервис подключался к базе данных под конкретной учетной записью 1С, необходимо отредактировать файл default.vrd, который находится в папке публикации. Рассмотрим пример строки соединения внутри тега point:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyBase"
ib="Srvr="ServerName";Ref="BaseName";usr="WebServiceUser";pwd="Password123";">
В этом случае при обращении к сервису IIS будет прозрачно передавать эти данные платформе 1С. Важный момент: помните, что хранение паролей в открытом виде в файле default.vrd является небезопасным. Используйте этот метод только в защищенных внутренних сетях или для сервисов с минимальными правами доступа.
2. Настройка анонимной авторизации в IIS. Чтобы веб-сервер позволял подключаться без запроса системного пароля Windows, проанализируем настройки в консоли управления IIS:
3. Синхронизация пользователя с пользователем 1С. Вы можете создать в базе 1С пользователя, имя которого совпадает с именем учетной записи анонимного доступа IIS (по умолчанию это IUSR). В настройках этого пользователя в 1С установите флаг «Аутентификация операционной системы» и выберите пользователя IUSR. В этом случае 1С автоматически пустит «анонима» под этой ролью.
Часто веб-сервис не взлетает из-за конфликта разрядности. Если вы используете 32-битную версию платформы 1С на 64-битной Windows, выполним следующие действия:
DefaultAppPool или пул с именем вашей публикации).True для параметра Разрешены 32-разрядные приложения (Enable 32-Bit Applications).Проанализируем также права на папки. Пользователь, от имени которого запущен пул приложений (например, IIS AppPool\DefaultAppPool), должен иметь права «Чтение и выполнение» на каталог bin платформы 1С, где лежит файл wsisapi.dll. Без этого IIS просто не сможет загрузить библиотеку-обработчик, и вы получите ошибку 500.
Если вы вызываете созданный сервис из другой базы 1С, крайне важно правильно инициализировать прокси-объект. Рассмотрим пример кода, который позволяет избежать окон авторизации на стороне клиента:
Определение = Новый WSОпределения(АдресWSDL, Логин, Пароль);
ТочкаПодключения = Определение.Сервисы[0].ТочкиПодключения[0];
Прокси = Новый WSПрокси(Определение,
ТочкаПодключения.Имя,
ТочкаПодключения.Имя,
ТочкаПодключения.Имя);
// Явное указание данных авторизации для прокси
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;
Использование этого метода гарантирует, что даже если на сервере настроена «Основная проверка подлинности» (Basic Authentication), ваше приложение корректно передаст заголовки авторизации в HTTP-запросе.
Подведем итог: для успешного поднятия веб-сервиса 1С на IIS следует избегать ручного вмешательства в web.config, использовать стандартные механизмы публикации Конфигуратора, следить за разрядностью пула приложений и четко определять модель безопасности (через default.vrd или системную проверку подлинности). Следуя этим шагам, вы создадите стабильную и производительную точку интеграции для ваших систем.