Ошибка при разборе дескриптора виртуальных ресурсов

Ошибка при разборе дескриптора виртуальных ресурсов

Возникла необходимость взаимодействовать с 1C с мобильного клиента под Windows Phone 7/8. Самым простым способом взаимодействия показалось работа через web сервисы, поддерживаемые 1С.

С точки зрения публикации web сервиса особых сложностей нет. Шаги подробно описаны в статьях:

Проблемы возникли с доступом к опубликованному web-сервису 1С. Под IIS 7.5 из под Windows 2008R2 после полудня танцев с бубном проблему решить не удалось. Были изучены статьи и ветки форумов:

но счастье так и не наступило.

В результате решил, что стоит попробовать поднять web сервис на Apache, поскольку с ним у меня обычно все было несколько проще с настройкой. Итак, на другом порту (8080) на том-же сервере был поднят Apache 2.2.22. В 1С был создан ещё один web сервис и опубликован уже на Apache. С настройками по умолчанию он также не заработал. Разберем ошибки.

Web сервис был опубликован в 1С под именем wsApache.

Публикация web-сервиса 1С под Apache

Соответственно, в указанном при публикации каталоге появился файл default.vrd следующего содержания:

В httpd.conf 1С добавила следующие строчки:

В целом, файлы/изменения создаваемые 1С почти рабочие. Теперь о проблемах.

Правильный линк на сервис

В некоторых статьях путь к web сервису указан как: http://имя_сервера:порт/имя_при_публикации/alias?wsdl.

  • Имя сервера: s-1s-1-hw
  • Порт: 8080
  • Имя при публикации: wsApache
  • Alias из файла default.vrd: service.1cws

Соответственно, НЕПРАВИЛЬНАЯ ссылка на web сервис 1С такая: http://s-1c-1-hw:8080/wsApache/service.1cws?wsdl

Если использовать такой линк, то 1C 8.2 выдаст сообщение вида:

Правильный вариант:

http://имя_сервера:порт/имя_при_публикации/ ws/ alias?wsdl.

Это обращение эквивалентно обращению по имени сервиса из default.vrd:

http://имя_сервера:порт/имя_при_публикации/ ws/ name?wsdl.

  • Name из файла default.vrd: Service

Соответственно, ПРАВИЛЬНЫЙ линк для доступа к web сервису 1С будет такой:

http://s-1c-1-hw:8080/wsApache/ ws/ service.1cws?wsdl

http://s-1c-1-hw:8080/wsApache/ ws/ service?wsdl

Если указать ссылку с суффиксом ?wsdl, то в веб браузере отобразиться XML файл с описанием опубликованного сервиса.

Если указать ссылку без суффикса ?wsdl, то при правильной настройке должна появится страница с гиперссылкой на опубликованный сервис:

Авторизация пользователя при обращении к web сервису 1С

Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default.vrd, то появиться стандартный диалог авторизации:

Диалог авторизации на web сервисе 1С

В тестовой базе был заведен тестовый пользователь IUSR с полными правами с пустым паролем. Если ввести в диалог в качестве логина этого пользователя, то авторизация пройдет успешно и отобразиться либо XML файл, либо ссылка на него (см. выше).

Можно исключить запрос авторизационной информации вбив логин и пароль прямо в файл default.vrd, что, конечно, не рекомендуется с точки зрения безопасности, но иногда необходимо.

Читайте также:  Вместо цифр печатает символы как исправить

Это все. В моем случае каких-то дополнительных правок конфиг файлов не потребовалось.

В некоторых статьях указывалось, что нужно убрать из httpd.conf опцию «Options None«. У меня работает в обоих вариантах, т.е. когда строка присутствует и когда она удалена.

Публикация web сервиса 1С на IIS 7.5

Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS. Был опубликован web сервис с именем wsIIS и именем сервиса ServiceIIS и alias-ом serviceIIS.1cws. Галка в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере» для простоты эксперимента была снята.

Публикация web сервиса 1С в IIS 7.5.

Корректная ссылка в моем случае: http://s-1c-1-hw/wsIIS/ws/ServiceIIS?wsdl. При попытке зайти из Chrome/IE получаем ошибку возвращенную IIS:

Ошибка HTTP 401.2 — Unauthorized

дабы избавиться от ошибки правим web.config сформированный 1С следующим образом:

Эта правка эквивалента изменению через консоль управления IIS для нашего опубликованного приложения с именем wsIIS правил авторизации пользователя.

Настройки IIS 7.5 для доступа к web сервисам 1C

Добавление тегов security в web.config или правка правил авторизации в консоли IIS приводит к тому, что при обращении к сервису по указанной выше ссылке появляется запрос на авторизацию. Вводим нашего тестового пользователя IUSR без пароля и получаем нужный XML файл в ответе сервера.

Прописав в default.vrd логин и пароль пользователя, как было указано выше для Apache, уберем окно авторизации и сервис будет всегда авторизовываться под указанным пользователем. Как проходит авторизация можно посмотреть в логах 1C. Но вариант с прописыванием пользователя в конфигурационный файл — не наш путь, ибо не секьюрно.

Изменим настройки авторизации пользователя (в IIS проверка подлинности), чтобы использовалась Windows авторизация. Сменить можно в консоли управления IIS, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.

Основные этапы запуска удаленного хранилища конфигураций 1С 8 на сервере , на котором планируется установить сервер удаленного хранилища 1С 8:

1. Установка 1С предприятия.
При установке платформы необходимо отметить следующие компоненты:

  • Сервер 1С:Предприятия 8.1
  • Адаптер web-сервисов 1С:Предприятия 8.1 (он понадобится для обеспечения доступа к серверу хранилища из интернета)
  • Сервер хранилища конфигурации.
Читайте также:  Как сжать текст в экселе

1.1 Устанавливаем сервер хранилища как сервис, для этого нужно выполнить следующую команду:
"C:Program Files1cv81incrserver.exe" -instsrvc -d "D:WebRepo"
— в ключе –d нужно указать путь к папке где будут храниться ваши хранилища.
2. Настройка поддержки WEB-сервисов.
В рамках данной статьи рассмотрим веб-сервер IIS 6.0(используется для Windows Server 2003).

Номер версии IIS Выпущена в составе Год
1.0 Windows NT 3.51 1995
2.0 Windows NT 4.0 1996
3.0 Пакет обновления 3 для Windows NT 4.0 1997
4.0 Пакет Option Pack для Windows NT 4.0 1998
5.0 Windows 2000 2000
5.1 Windows XP Professional 2001
6.0 Windows Server 2003 2003
7.0 Windows Vista; Windows Server 2008 2006
7.5 Windows 7; Windows Server 2008 R2 2009

Таблица соответствия версий IIS и ОС семейства Windows

Для настройки поддержки web-сервисов необходимо сделать следующее:

  • Необходимо зарегистрировать менеджер веб-сервисов: Start—Run "C:Program Files1cv81inwsinst.exe" –iis.
  • В C:Inetpubwwwroot создаем каталог с именем appstorage1C
  • Создание прав на использование веб-сайтов. Открытие IIS / Веб-узлы / Веб-узел по умолчанию (правой кнопкой мыши) Свойства
  • Создание приложения IIS на основе виртуального каталога. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Каталог / кнопка Создать
  • Проверка правильности указания пользователя для работы с IIS и флага анонимности. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Безопасность каталога
  • Настройка отображения расширений .1cws и .1crs (+ .1ccr) на wsisapi.dll. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Каталог / кнопка Настройка.

Обязательно указываем путь к исполняемому файлу в кавычках если имеется пробел в данном пути.

  • Добавление MIME типов 1C:Предприятия в настройки HTTP заголовков виртуальной директории Web-сервисов (расширения .1cws и .1crs (+ .1ccr), Mime тип text/xml). Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Заголовки HTTP
  • Разрешение запускать wsisapi.dll на IIS. (если не создано — в расширениях Web-сервисов IIS добавить wsisapi.dll как расширение Web-сервисов и разрешить ему запуск). Проверить имеется ли в наличии и при отсутствии создать:
  • Настройка прав пользователей на каталог исполняемого файла "C:Program Files1cv81in" 2-х учетных записей IIS

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

Это файл в формате XML с расширением 1ccr, с единственным узлом и атрибутом connectString – в этом атрибуте необходимо указать адрес нашего сервера хранилища конфигурации в сети. В нашем случае мы не разделяли сервер хранилища и IIS, поэтому указываем имя компьютера, на котором мы проделываем все эти действия. Назовем наш файл repository.1ccr.

Читайте также:  Телевизор супра поддерживает ли цифровое телевидение

На работе мы активно используем возможности платформы «1С:Предприятие 8.3» в качестве web-клиента. Проанализировав способы и затраты на разработку корпоративных приложений, мы решили сфокусироваться на технологиях от компании 1С. Это тема отдельного разговора, а сегодня мне бы хотелось поделиться решением небольшой проблемы, с которой мы столкнулись при публикации очередной информационной базы для работы через web.

Суть в следующем. Есть у нас отдельный сервер для информационных баз с которыми работают удаленные клиенты. Изначально у нас была опубликована одна информационная база (именно для работы через web), и все работало как часы. Сегодня мы решили разместить на этом же сервере новую ИБ и столкнулись с проблемой доступа к базе через web. Публикация из конфигуратора проходила нормально – «1С:Предприятие» внесло соответствующие изменения в конфигурационный файл Apache (мы используем именно этот web-сервер), но при попытке обратиться к публикуемой базе через браузер получали ошибку:

С подобной ошибкой я раньше никогда не сталкивался и первым делом полез проверять конфиг в Apache. Ничего необычного там не увидел. Запись для второй публикуемой базы аналогичная той, которая уже работает. Следующим шагом проверил файлик vrd – тоже все ок. Было у меня предположение, что проблема может крыться в отсутствии прав доступа к директории с файликом vrd, но оказалось, что проблема не в этом.

Промучившись полчаса, решил обратиться за помощью в Google. Увы, кроме аналогичных вопросов ничего хорошего он мне не выдал. Пришлось отправлять к начальной точке и в очередной раз перебирать конфиги.

Не буду описывать дальнейшие действия, скажу лишь, что проблема оказалось в порядке записей опубликованных ИБ в самом конфигурационном файле Apache. Первая наша база была опубликована в корне, т.к. для нее был задан alias “/”. При обращении к site.com, Apache сразу переадресовывал на site.com/base1. Для новой ИБ мы выбрали другой алиас – «b2b/base» (условно) и из-за того, что он находился под «/» 1C возникала ошибка. Переставив записи местами (сначала новую базу, затем старую, которая в корне) – все заработало.

Если вы столкнулись с подобной проблемой – попробуйте мой способ решения. Ради теста я опубликовал еще несколько баз и никаких проблем с доступом не возникло.

Ссылка на основную публикацию
Отчет на тему модель черного ящика
Модель системы типа чёрный ящик отображает только связи системы со средой, в виде перечня "входов" и "выходов". Трудность построения модели...
Операции сложения и умножения событий обладают свойством
1.4. Сложение и умножение вероятностей Событие А называется частным случаем события В, если при наступлении А наступает и В. То,...
Определение предела через эпсилон дельта
Тема 1. Предел функции Раздел: Предел и непрерывность функции Допустим, что функция определена в некоторой области . Будем рассматривать понятие...
Очистить кэш сообщений вконтакте что это
Привет! Сегодня я покажу вам как очистить кэш в ВК на телефоне андроид и айфоне. Вы можете очень просто и...
Adblock detector