#0
by manserg
При попытке подключиться из тестового клиента на C# WinRT к нормально работающему web-сервису 1С, получаю следующее сообщение: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm="1C:Enterprise 8.2"'." Тестовый клиент создан на C# в Visual Studio 2012 из шаблона Windows Store с использованием .NET 4,5. Классы сгенерированы автоматически из WSDL через "Add Service Reference", однако теперь там нет возможности генерить Web Reference а только Service Reference. Пример кода тестового клиента: private void BtnCompany_Click(object sender, RoutedEventArgs e) { На форуме видел похожую тему: Там была рекомендация использовать свойство "PreAuthenticate", однако так и не смог найти данное свойство у сгененрированных Service Reference. Был бы очень признателен за предоставление реально работающего примера клиента на C# под WinRT для 1С web-сервисов!
#1
by СуперГрид
вот жесть то.... как бы винрт признали тупиковой и сняли с производства. вин8 - тоже ошибка природы.
#3
by Serginio1
Откуда такие сведения? WinRT 'nj Апи используемая как на x86 так и вин8 и Windows RT. a зачем тебе Service.ClientCredentials.HttpDigest.ClientCredential.UserName = "web"; Service.ClientCredentials.HttpDigest.ClientCredential.Password = "12345"; Авторизоция нужна для входа в 1С
#4
by manserg
Service.ClientCredentials.HttpDigest.ClientCredential.Password = "12345"; Были использованы от безисходности решения проблемы аутентификации. Судя по всему Service Reference генерируемый автоматом в VS2012 невозможно заставить использовать PreAuthenticate параметр, по крайней мере мне этого не удалось. Проблема именно в том, что по умолчанию 1С web-service производит авторизацию по данным заголовка SOAP запроса а уже потом на уровне сервиса. В общем эксперименты продолжаются, но надежды заставить нормально работать Service Reference тают на глазах...
#5
by manserg
Не хотел даже отвечать на подобные высказывания, но решил все же развеять подобные мнения - MS Windows 8 весьма современное и перспективное решение, это признано многими уважаемыми аналитиками. А "ограничения" WinRT в основном в головах пользователей т.к. большинство привыкли к x86 Windows. То что WinRT будет только развиваться говорят хотябы официально озвученные планы многих уважаемых вендоров, которые уже заявили о скором выпуске множества устройств на WinRT. Да и приведенная ссылка подтверждает, что эра WP8 только на подходе. В любом случае, как говорится: поживем - увидим...
#7
by Serginio1
Лучше тебе такие вопросы задавать на спец форумах. RSDN или stackoverflow.com Нужно смотреть это свойство у транспорта
#10
by manserg
Уже перечитал массу статей на stackoverflow.com, кое-что нарыл, проверяю... Все бы ничего, да только WebRequest это не одно и тоже что Service Reference, более того, в WinRT используется .NET 4,5 а в нем много изменений и отличий от прежних frameworks. аналогично, но за пример спасибо. А вот это уже интересно, буду пробовать. Спасибо за участие, Serginio1!
#11
by Serginio1
Сам изучаю WCF и самому интересно. Там подключение может использовать разные биндинги
#13
by Serginio1
Он кстати тебя там спрашивал web-service развернут в Apache. Где и как устанавливать параметр PreAuthenticate?
#17
by AaNnDdRrEeYy
то что по первой ссылке можно тупо в app.config прописать, обычно оно само автоматом прописывается при импорте ссылки на сервис.
#18
by Serginio1
Да смотрю я на WCF там все в основном через конфиг делается. Но видишь ошибку unauthorized with client authentication scheme 'Anonymous' А ему нужен Basic
#19
by manserg
Так речь о Web Service Reference или Service Reference? У меня как раз Service Reference можно только в WinRT сгенерить и соответственно у меня в сгенерированном proxy отсутсвует свойство PreAuthenticate
#20
by manserg
Спасибо, проверю эти варианты, отпишусь тогда по результату. Пока удалось победить ошибку только используя HttpClient и в через HttpClientHandler установив PreAuthenticate = true; и Credentials = new NetworkCredential("web", "12345"); получить отсутсвие ошибки и нормальное завершение запроса. Теперь осталось разобраться с парсингом получаемых данных... Но конечно лучше все было бы реализовать через Service Reference как готовые классы.
#21
by manserg
Есть предположение, что в сгенерированном файле Reference.svcmap необходимо произвести соответствующие настройки, но вот разобраться какие и как их настроить пока не удалось. На всякий случай пример этого файла:
#22
by Serginio1
Ну у тебя уже есть сгенеренные Сериализаторы. Так что самостоятельно парсингом заниматься не надо. Нужно разобраться Service Reference
#24
by Serginio1
Сейчас ради интереса создал приложение с ServiceReference Там создался AppConfig с такой веткой, но без ветки создались конструкторы с параметрами public ИмяСервисаPortTypeClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { }
#25
by Serginio1
Если открыть через Edit WCF Configuration раскрыть ветку Bindings будет ветка ИмяСервисаBinding Там вкладочка Security и ветка TransportSecurity Properties В свойстве transport clientCredentialType нужно установить Basic а вот realm наверное из твоего предупреждения или опустить
#26
by manserg
Спасибо конечно за развернутый пример, однако у меня в приложении на базе шаблона Windows Store нет AppConfig файла. Подозреваю должна быть ему альтернатива...
#27
by manserg
Да, в сервисах созданных на C#, похоже нет пролем с подключением, однако проблемы наблюдаются при подключении к сервисам 1С. Например 1С web-service генерит wsdl с методами версий soap 1.1 и 1.2, так вот пока приложения под WinRT при генерации Service Reference четко говорят, что не поддерживается формат версии soap 1.2 т.ч. пришлось вручную исключать из wsdl блоки версии 1.2 В приложении под WinRT вообще много изменено относительно привычного строения приложения под Windows x86.
#28
by manserg
Биндинг корректный при генерации Service Reference, т.ч. особого смысла не вижу его генерить вручную. Логин и пароль указал, но результат мною уже озвучен в первом посте. От безысходности попробую пожалуй полностью вручную прописать биндинг вдруг действительно поможет...
#29
by manserg
Прости - вообще не понял что и где открыть. У меня в приложении есть любопытный файл "ServiceReferences.Designer.ClientConfig" со следующим содержимым: Быть может в нем нужно что то прописывать?
#30
by manserg
Вот еще любопытный файл "configuration.svcinfo" в разделе сгенерированного Service Reference со следующим содержимым: Может в нем все прописывается?
#31
by Serginio1
Посмотри Кстати а какие конфигурационные файлы в Solution Explorer? Типа Там больше нет файла app.config в WinRT так конфигурации должно быть сделано в коде. Для SimpleApp это делается в App.xaml.cs - OnLainched событие в коде. protected override void OnLaunched(LaunchActivatedEventArgs args) {
#32
by Serginio1
Биндинг нормальный но ему нужно указать SecurityMode WSHttpBinding myBinding = new WSHttpBinding; restcoachPortTypeClient Service = new restcoachPortTypeClient(myBinding, ea);
#33
by manserg
Спасибо за идею, заработал клиент со следующим кодом: restcoachPortTypeClient Service = new restcoachPortTypeClient(myBinding, ea); Всем еще раз спасибо за участие!
#34
by Serginio1
Вообще для справки [url= - класс[/url] [q] S>Представляет привязку с возможностью взаимодействия, поддерживающую распределенные транзакции и [b]безопасные надежные сеансы[/b]. [/q] WSHttpBindingBase.ReliableSession - свойство типа [url=
#35
by Serginio1
Короче есть Класс WSHttpBinding Представляет привязку с возможностью взаимодействия, поддерживающую распределенные транзакции и безопасные надежные сеансы. WSHttpBindingBase.ReliableSession - свойство типа OptionalReliableSession
#36
by manserg
Да то понятно, что есть, да вот в .NET 4.5 for WinRT его я не нашел и пришлось использовать BasicHttpBinding. Вот статья с описание различий между WsHttpBinding и BasicHttpBinding: И судя по всему мало того, что в WinRT пока поддерживается только SOAP 1.1, так еще думаю на стороне 1С скорей всего пока не поддерживаются никакие шифрования заявленные в WsHttpBinding.
#37
by Serginio1
Говорят с выходом Windows 8.1 многое изменится. В 8.3 обещаяют Реализована поддержка защищённого соединения SSL и сертификатов во всех механизмах платформы, использующих Интернет: Тонкий клиент (как для Windows, так и для Linux), Web-сервисы 1С:Предприятия, Объекты встроенного языка, реализующие работу по протоколам FTP и HTTP, Интернет-почта. Могут использоваться сертификаты из стандартного хранилища операционной системы или из файла. Настроить использование сертификатов можно через командную строку или в диалоге параметров запуска информационной базы.
#39
by manserg
Да, ожидаю с нетерпением изменений к лучшему, т.к. текущая реализация WinRT оставляет жалать лучшего. И продакшн 1С 8.3 тоже очень ждемс... Но делать то нужно сейчас, т.ч. извращаемся и делаем на том, что есть.
Тэги: Мобильный мир
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Web-сервис работает только локально! (((
- Проблема с Web-Сервисом в 1С 8.2
- Проблема аутентификации при работе с WEB-сервисами
- Web-сервис(WCF) --> 1C -->Web-сервис(WCF) - реально?
- проблема с web-сервисами
- Проблема с подключением Cipher 8300 невозможно настроить IR адаптер
- Проблема с установкой клиента 1С групповыми политиками
В этой группе 1С
- Сколько получает такой аналитик?
- Условное оформление табличной части документа есть ли способ реализовать?
- SQL, 1С Запросы, СКД - Как сделать
- Получить тип значений реквизита справочника по OLE
- По MS SQL подскажите, кто знает
- Заполнение массива XDTO
- Нужно доработать отчет, использующий Универсальный Отчет
- СКД: Не выводит пользовательские поля!
- Открытие и сохранение данных файла в 1С
- БП 2.0 копирование декларации по налогу на прибыль - блокируются ячейки
- Правое значение в СКД
- Поиск по наименованию
- очистить ККМ перед выгрузкой как правильно7
- Вопрос по NetObjectToIDispatch
- v7: Formex. 1С вылетает при установке картинки на динамически созданную кнопку.
- Помогите с лицензированием
- Помогите свернуть базу ПП 1С-Рарус: ТКПТ v8 (08.1.19.03)
- УНФ заказ поставщику на основании заказа на производство
- УФ взять и открыть произвольную форму, что нельзя?
- Как скрыть список пользователей в веб клиенте1С 82