:: Не фоксом единым
WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Некоторое время назад пришлось закрывать WEB-сервис сертификатом. Теперь возникла обратная задача - надо написать на C# клиента, который работает с WEB-сервисом, защищённым сертификатом.

Добавил в проект ссылку на службу, вызвал:

ServiceReference1.MyServiceClient service = new ServiceReference1.MyServiceClient();
service.GetData(
[...]
);

Немножко пришлось подкорректировать App.config, что бы с ключами было всё нормально:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
<system.serviceModel>
<client>
<endpoint address="https://myadm/my/Service1.svc" binding="wsHttpBinding"
bindingConfiguration="wsBinding" contract="ServiceReference1.IMyService"
name="wsBinding" behaviorConfiguration="credentialConfiguration" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="credentialConfiguration">
<clientCredentials>
<clientCertificate findValue="client_adm.bank"
storeLocation = "CurrentUser"
storeName="My"
x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="wsBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>

И, теперь вижу сообщение:

Цитата:
Тип содержимого application/soap+xml; charset=utf-8 не поддерживается службой https: //myadm/my/Service1.svc. Это может быть вызвано несоответствием привязок клиента и службы.

И, чувствую, что опять оказался "в начале длинного пути"...

О каких привязках речь? В какую сторону копать?



Исправлено 1 раз(а). Последнее : S-type, 13.03.17 12:37
Ratings: 0 negative/0 positive
Re: WEB-клиент
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Думаю стоит начать с того, что ПОЛНОЕ сообщение об ошибке, включая имена классов/интерфейсов которые его выдали, желательно без локализации (на ридной англицкой мове), ввести в строку поиска гугла


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Посмотрел - сервис возвращает

Цитата:
Content-Type: text/xml; charset=utf-8

В Web.config указано:

<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>

На msdn.microsoft.com сказано

Цитата:
Привязка BasicHttpBinding использует протокол HTTP в качестве транспорта для отправки сообщений SOAP версии 1.1.
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Цитата:
{"Тип содержимого application/soap+xml; charset=utf-8 не поддерживается службой myadm. Это может быть вызвано несоответствием привязок клиента и службы."}

{"Удаленный сервер возвратил ошибку: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.."}
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
На сколько понял, есть SOAP 1.2 - в заголовке сообщения указано "application/soap+xml", а есть SOAP 1.1 - в заголовке указано "text/xml". И, проблема из за несоответствия версии протокола клиента и сервера. У клиента версия 1.2, у сервера 1.1. Т.е. мне надо как то изменить Web.config, что бы сервис был версии 1.2. Конечно, если можно обойтись только config-ом.



Исправлено 3 раз(а). Последнее : S-type, 13.03.17 14:59
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Хотя, можно и наоборот - клиента сделать под 1.1 (заменить wsHttpBinding на basicHttpsBinding). Но, IMHO, лучше сервер "подтянуть".
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Меняю в config-е

<protocolMapping>
<add binding="wsHttpBinding" scheme="https"/>
</protocolMapping>

сервис перестаёт работать...



Исправлено 1 раз(а). Последнее : S-type, 13.03.17 16:26
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Намучился с <protocolMapping>, но не смог победить, выкинул его к чёрту. Теперь конфиг (сервиса) выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation targetFramework="4.6.1" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="MyService.MyService">
<endpoint binding="wsHttpBinding" bindingConfiguration="wsBinding" contract="MyService.IMyService" bindingNamespace="https://myadm" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>

Однако, появилась другая беда - сервис выдаёт

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">www.w3.org;
</s:Header>
<s:Body>
<s:Fault>
<s:Code>
<s:Value>s:Sender</s:Value>
<s:Subcode>
<s:Value>a:ActionMismatch</s:Value>
</s:Subcode>
</s:Code>
<s:Reason>
<s:Text xml:lang="ru-RU">Указанное в сообщении действие SOAP, "", не соответствует действию HTTP SOAP, "http://tempuri.org/IMyService/GetTest".</s:Text>
</s:Reason>
<s: Detail>
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s: Detail>
</s:Fault>
</s:Body>
</s:Envelope>

Чего ему опять не хватает?



Исправлено 2 раз(а). Последнее : S-type, 14.03.17 16:54
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Хотя... Такое сообщение выскакивает только в SoapUI, а клиент на C# работает!
Ratings: 0 negative/0 positive
Re: WEB-клиент
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
В SoapUI то же работает - если на закладке WS-A установить галочки "Enable WS-A addressing" и "Add default wsa:To"!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика