Ошибка adsi невозможно записать httpd conf

Ошибка adsi невозможно записать httpd conf

Цель блога описать интересные и полезные примеры программирования в системе 1С:Предприятие 8.

Страницы

вторник, 6 августа 2013 г.

1С:Предприятие 8. Веб-сервисы. Ошибки веб-сервисов и их причины

Хочу рассказать об ошибках, с которыми столкнулся при разработке веб-сервисов на 1С. Статью буду дополнять по мере получения опыта.

1
Это сообщение об ошибке при подключении к веб сервису из PHP.
[31-Mar-2013 05:32:02 UTC] PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://test.ru/test/ws/WebServices?wsdl’ : failed to load external entity

Данное сообщение говорит лишь о недоступности веб-сервера, на котором опубликована база. В этом случае попробуйте вручную вызвать http://test.ru/test/ws/WebServices?wsdl и убедиться, что WSDL формируется. Если не формируется, значит либо веб-сервер выключен, либо база опубликована по другому адресу или порту, либо блокирует фаервол. Могут быть и другие причины.

2
02-Apr-2013 13:46:10 UTC] PHP Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in /home/users/b/test/domains/ test .ru/ testDIR / test .php:169

Эта ошибка возникает если WSDL возвращается с ошибкой. Есть несколько причин для этой ошибки:

  1. Несогласованность пространств имен в конфигурации. Например в ws-операции тип возвращаемого значения не соответствует типу из XDTO. Это может возникнуть при сменен URI пространства имен пакета XDTO.
  2. Возникает если в PHP включить кеш WSDL. Кеш запоминает WSDL и при каждом вызове веб-операции не запрашивает его, но если вы поменяли веб-сервис, то произойдет ошибка. Вообще, при разработке кеш стоит отключить, а если уже все работает то для скорости лучше включить. Ускорение при отключенном кеше заметное. Для примера скажу, что создание объекта SoapClient с выключенным кешем занимает примерно 2 сек, а с включенным — за сотые доли секунды. Отключить можно так:
    ini_set ( "soap.wsdl_cache_enabled" , 0);
    или
    $client = new SoapClient( ‘http://somewhere.com/?wsdl’ , array ( ‘cache_wsdl’ => 0));

12 комментариев :

Не могу разобраться со следующей ошибкой. Разные soap клиенты возвращают ошибку типа "Unable to parse URL" при вызове любого метода после чтения wsdl. Т.е. wsdl читают, а следующий запрос отправить не могут. На причину этой ошибки меня наталкивает отсутствие полного url в wsdl: . 1C 8.2.16.362, apache 2.2.18, 2.2.25. Т.е. обновление апача с 18 до 25 релиза не помогло. В httpd.conf прописан ServerName tst.icc.biz:80. Куда рыть дальше? Пробовать другой релиз 1С?

Читайте также:  Телефон как тачпад для компьютера

Я бы проверил пространства имен пакетов XDTO, которые описывают типы возвращаемые в результатах операций.

Возникла необходимость взаимодействовать с 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, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.

Пытаюсь поднять свое облако согласно статье: https://geektimes.ru/post/294997
Вроде на последнем этапе перезапуска апача он перестает запускаться, утилита apache2ctl configtest говорит следующее:

Т.е. где-то тут ошибка:

Сам в этом разбираюсь чуть более, чем никак; с автором связывался — на что был получен ответ "я в китае, тут ГК не открывается, все должно работать".
Подскажите, что и где нужно подправить?

Ссылка на основную публикацию
Охлаждение оперативной памяти своими руками
Не будем задаваться вопросом «зачем это?» - и так понятно. Многие производители, заложив в свою IT-продукцию широкие возможности, в том...
Они обычно ходят всюду вместе
A phrasal verbis usually a two-word verb: get on, go behind, fall off, turn up, run off. The most common...
Определение задачи использует нерекомендуемый компонент планировщик
Планировщик задач Windows позволяет пользователю выполнять продвинутую настройку ПК и совершать запуск нужных ему приложений и утилит в конкретное время...
Охлаждение для телефона своими руками
Одним из популярных технических решений в смартфонах 2018 года стало использование систем водяного охлаждения — например, трубки с жидкостью стоят...
Adblock detector