2016-04-29 3 views
0

Я пытаюсь подключиться к SOAP веб-службы, и я получаю эту ошибку:Подключение к веб-службы - Маркер поставщик не может получить маркеры для цели

The token provider cannot get tokens for target ' http://realurl.com/myservice.svc '

компания, которая сделала службу прислал мне app.config пример кода:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <!-- Specify UserName and Password of context user --> 
     <add key="UserName" value="xxxxxx" /> 
     <add key="Password" value="xxx" /> 
    </appSettings> 
    <system.serviceModel> 
     <bindings> 
      <wsHttpBinding> 
       <binding name="ValuationServiceEndpoint" closeTimeout="00:01:00" 
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
        maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
        allowCookies="false" > 
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
         maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        <reliableSession ordered="true" inactivityTimeout="00:10:00" 
         enabled="false" /> 
        <security mode="TransportWithMessageCredential" > 
         <message clientCredentialType="UserName" establishSecurityContext="false"/> 
        </security> 
       </binding> 
      </wsHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="https://sampleurl.com/service.svc" 
       binding="wsHttpBinding" bindingConfiguration="ValuationServiceEndpoint" 
       contract="Provider.ValuationService.ValuationService" name="ValuationServiceEndpoint" > 
      </endpoint> 
     </client> 
    </system.serviceModel> 
</configuration> 

У меня возникли проблемы с этим кодом, хотя, потому что адрес конечной точки, они дали мне это HTTP не HTTPS. Это означает, что режим безопасности TransportWithMessageCredential не будет работать здесь, вместо этого я заменил его на Message.

Вот мой текущий код:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <appSettings> 
     <add key="Username" value="myuser" /> 
     <add key="Password" value="mypass" /> 
    </appSettings> 
    <system.serviceModel> 
     <bindings> 
      <wsHttpBinding> 
       <binding name="ValuationServiceEndpoint"> 
        <security mode="Message"> 
         <message clientCredentialType="UserName" establishSecurityContext="false" /> 
        </security> 
       </binding> 
      </wsHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://realurl.com/service.svc" 
       binding="wsHttpBinding" bindingConfiguration="ValuationServiceEndpoint" 
       contract="Provider.ValuationService.ValuationService" name="ValuationServiceEndpoint" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

Я не могу понять, почему я получаю сообщение об ошибке маркера. Может ли кто-нибудь помочь?

Спасибо!

ответ

1

Прошу прощения, чтобы ответить на ваше сообщение через 2 месяца, но по крайней мере вы узнаете, почему это не сработало.

Ваша проблема на самом деле проста. Режим безопасности был несовместим между сервером и вашим клиентом. Сервер ожидал TransportWithMessageCredential, и клиент предоставлял Message.

Если вы только хотели использовать защиту паролем, используйте сообщение с обеих сторон. Если вы хотите использовать https, вам необходимо предоставить TransportWithMessageCredential с обеих сторон.

 Смежные вопросы

  • Нет связанных вопросов^_^