При публикации информационной базы 1С:Предприятие на веб-сервере IIS (Internet Information Services), особенно в среде Windows Server 2003, системные администраторы часто сталкиваются с ошибкой: 1c ошибка adsi - -2147352567(0x80020009). Эта ошибка расшифровывается как «произошло исключение» и указывает на то, что платформа 1С не смогла корректно обратиться к метабазе IIS через интерфейс ADSI для создания или изменения виртуального каталога.
В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые методы её решения. Мы пройдем путь от проверки прав доступа до ручной настройки конфигурационных файлов, чтобы обеспечить стабильную работу веб-сервисов 1С.
Интерфейс ADSI (Active Directory Service Interfaces) используется платформой 1С для автоматизации управления настройками IIS. Когда вы нажимаете кнопку «Опубликовать» в конфигураторе, программа пытается программно создать виртуальное приложение в IIS, прописать обработчики и создать файл default.vrd. Ошибка 0x80020009 сигнализирует о том, что на одном из этих этапов произошел сбой доступа или конфигурационный объект не был найден.
Первым делом проанализируем ситуацию с правами. В Windows Server 2003 настройки IIS хранятся в специальном файле Metabase.xml. Если у учетной записи, от имени которой запущен Конфигуратор 1С, нет прав на чтение и запись в этот файл или в папку конфигурации IIS, возникнет ошибка ADSI.
C:\Windows\System32\Inetsrv\History и файлу Metabase.xml.В IIS 6.0 (стандарт для Windows Server 2003) по умолчанию включена строгая политика безопасности. Просто установить компонент ASP.NET недостаточно — его нужно явно разрешить в консоли управления. Рассмотрим, как это сделать:
Для регистрации ASP.NET используем утилиту aspnet_regiis.exe. Перейдем в каталог соответствующей версии .NET Framework и выполним команду:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis.exe -i
Если вы используете 64-битную версию Windows Server 2003, но устанавливаете 32-битную платформу 1С, возникает конфликт разрядностей. IIS 6.0 не умеет одновременно работать с 32-битными и 64-битными расширениями в рамках одного пула приложений. Выясним, как переключить IIS в режим поддержки 32-битных приложений:
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
Важно: После выполнения этой команды все пулы приложений будут работать в 32-битном режиме. Это необходимо для корректной загрузки библиотек 1С (таких как wsisapi.dll).
Алгоритм публикации 1С жестко привязан к структуре IIS. Он ищет сайт с идентификатором 1, который по умолчанию называется Default Web Site. Если этот сайт был удален, переименован или создан заново с другим ID, скрипт публикации выдаст ошибку 0x80020009, так как не сможет найти путь для создания виртуального каталога. Проанализируем настройки сайта:
Если автоматическая публикация через Конфигуратор продолжает выдавать ошибку ADSI, мы можем обойти этот механизм и настроить все вручную. Это самый надежный способ, позволяющий точно контролировать каждый параметр.
Рассмотрим алгоритм ручной настройки:
C:\inetpub\wwwroot\mybase).IUSR_...).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="C:\1C_Bases\Base1";">
<ws>
<point name="WebServiceName"
alias="ws1.1cws"
enable="true"/>
</ws>
</point>
Обратите внимание: Параметр base должен совпадать с именем виртуального каталога в IIS, а параметр ib содержать строку соединения с базой.
Для того чтобы IIS понимал, как обрабатывать запросы к 1С, нужно сопоставить расширения файлов с библиотекой 1С. В свойствах виртуального каталога перейдем на вкладку Virtual Directory и нажмем кнопку Configuration.
.1cws (для веб-сервисов).wsisapi.dll (для 1С 8.2/8.3 она находится в папке bin установленной платформы).Посмотрим на типичный путь к библиотеке:
C:\Program Files\1cv8\8.3.XX.XXXX\bin\wsisapi.dll
Мы проанализировали основные причины возникновения ошибки 0x80020009 при публикации 1С. В большинстве случаев проблема кроется в безопасности устаревших систем Windows Server 2003 и особенностях взаимодействия 32-битных приложений с 64-битной средой IIS. Использование ручного метода создания файла default.vrd и настройки виртуального каталога является наиболее стабильным решением, позволяющим избежать ограничений интерфейса ADSI.