Как исправить ошибку ADSI -2147352567 (0x80020009) при публикации 1С на веб-сервере IIS

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

При публикации информационной базы 1С:Предприятие на веб-сервере IIS (Internet Information Services), особенно в среде Windows Server 2003, системные администраторы часто сталкиваются с ошибкой: 1c ошибка adsi - -2147352567(0x80020009). Эта ошибка расшифровывается как «произошло исключение» и указывает на то, что платформа 1С не смогла корректно обратиться к метабазе IIS через интерфейс ADSI для создания или изменения виртуального каталога.

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

Разберем природу ошибки ADSI

Интерфейс ADSI (Active Directory Service Interfaces) используется платформой 1С для автоматизации управления настройками IIS. Когда вы нажимаете кнопку «Опубликовать» в конфигураторе, программа пытается программно создать виртуальное приложение в IIS, прописать обработчики и создать файл default.vrd. Ошибка 0x80020009 сигнализирует о том, что на одном из этих этапов произошел сбой доступа или конфигурационный объект не был найден.

Способ 1: Проверка прав доступа к метабазе IIS

Первым делом проанализируем ситуацию с правами. В Windows Server 2003 настройки IIS хранятся в специальном файле Metabase.xml. Если у учетной записи, от имени которой запущен Конфигуратор 1С, нет прав на чтение и запись в этот файл или в папку конфигурации IIS, возникнет ошибка ADSI.

  1. Убедимся, что Конфигуратор запущен с правами локального администратора сервера.
  2. Проверим доступ к папке C:\Windows\System32\Inetsrv\History и файлу Metabase.xml.
  3. Проанализируем состояние службы IIS Admin Service. Она должна быть запущена, так как именно она отвечает за программный доступ к настройкам сервера.

Способ 2: Настройка расширений веб-служб (Web Service Extensions)

В IIS 6.0 (стандарт для Windows Server 2003) по умолчанию включена строгая политика безопасности. Просто установить компонент ASP.NET недостаточно — его нужно явно разрешить в консоли управления. Рассмотрим, как это сделать:

  1. Откроем оснастку управления IIS через «Администрирование».
  2. Перейдем в раздел Web Service Extensions (Расширения веб-служб).
  3. Найдем в списке пункт Active Server Pages и установим для него статус Allowed (Разрешено).
  4. Проверим наличие пунктов ASP.NET v2.0 или ASP.NET v4.0. Если они находятся в статусе Prohibited, обязательно переведем их в Allowed.
  5. Если нужной версии ASP.NET нет в списке, выполним ее регистрацию вручную через командную строку.

Для регистрации ASP.NET используем утилиту aspnet_regiis.exe. Перейдем в каталог соответствующей версии .NET Framework и выполним команду:


cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis.exe -i

Способ 3: Особенности 64-битных систем (x64)

Если вы используете 64-битную версию Windows Server 2003, но устанавливаете 32-битную платформу 1С, возникает конфликт разрядностей. IIS 6.0 не умеет одновременно работать с 32-битными и 64-битными расширениями в рамках одного пула приложений. Выясним, как переключить IIS в режим поддержки 32-битных приложений:

  1. Откроем командную строку.
  2. Выполним скрипт, входящий в состав IIS, для активации 32-битного режима:

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1

Важно: После выполнения этой команды все пулы приложений будут работать в 32-битном режиме. Это необходимо для корректной загрузки библиотек 1С (таких как wsisapi.dll).

Способ 4: Проверка «Веб-сайта по умолчанию»

Алгоритм публикации 1С жестко привязан к структуре IIS. Он ищет сайт с идентификатором 1, который по умолчанию называется Default Web Site. Если этот сайт был удален, переименован или создан заново с другим ID, скрипт публикации выдаст ошибку 0x80020009, так как не сможет найти путь для создания виртуального каталога. Проанализируем настройки сайта:

  1. Убедимся, что в IIS присутствует «Веб-сайт по умолчанию».
  2. Если сайт был изменен, попробуем создать новый сайт с ID 1 или воспользуемся ручной публикацией.

Способ 5: Ручное создание публикации (универсальный метод)

Если автоматическая публикация через Конфигуратор продолжает выдавать ошибку ADSI, мы можем обойти этот механизм и настроить все вручную. Это самый надежный способ, позволяющий точно контролировать каждый параметр.

Рассмотрим алгоритм ручной настройки:

  1. Создание папки: Создадим физический каталог на диске (например, C:\inetpub\wwwroot\mybase).
  2. Создание виртуального каталога: В оснастке IIS нажмем правой кнопкой на «Веб-сайт по умолчанию» -> Создать -> Виртуальный каталог. Укажем имя (алиас) и путь к созданной папке.
  3. Настройка разрешений: В свойствах каталога на закладке «Безопасность каталога» убедимся, что разрешен анонимный доступ (обычно под учетной записью IUSR_...).
  4. Файл конфигурации: В папке каталога создадим текстовый файл default.vrd. Это XML-файл, описывающий подключение. Рассмотрим пример его содержания:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        base="/mybase"
        ib="File=&quot;C:\1C_Bases\Base1&quot;;">
    <ws>
        <point name="WebServiceName"
                alias="ws1.1cws"
                enable="true"/>
    </ws>
</point>

Обратите внимание: Параметр base должен совпадать с именем виртуального каталога в IIS, а параметр ib содержать строку соединения с базой.

Способ 6: Настройка расширений (Handler Mappings)

Для того чтобы IIS понимал, как обрабатывать запросы к 1С, нужно сопоставить расширения файлов с библиотекой 1С. В свойствах виртуального каталога перейдем на вкладку Virtual Directory и нажмем кнопку Configuration.

  1. На вкладке Mappings добавим новое расширение.
  2. Укажем расширение .1cws (для веб-сервисов).
  3. В поле исполняемого файла выберем путь к библиотеке wsisapi.dll (для 1С 8.2/8.3 она находится в папке bin установленной платформы).
  4. Снимем флажок Verify that file exists (Проверять наличие файла).

Посмотрим на типичный путь к библиотеке:

C:\Program Files\1cv8\8.3.XX.XXXX\bin\wsisapi.dll

Заключение

Мы проанализировали основные причины возникновения ошибки 0x80020009 при публикации 1С. В большинстве случаев проблема кроется в безопасности устаревших систем Windows Server 2003 и особенностях взаимодействия 32-битных приложений с 64-битной средой IIS. Использование ручного метода создания файла default.vrd и настройки виртуального каталога является наиболее стабильным решением, позволяющим избежать ограничений интерфейса ADSI.

← На главную