Пожалуйста, помогите новичку понять привязки ссылок на услуги - PullRequest
0 голосов
/ 16 февраля 2012

Меня недавно попросили подключиться к стороннему веб-сервису (* .asmx). Я создал новый веб-сайт ASP.NET и использовал мастер для создания ссылки на Сервис. Когда я пошел позвонить в службу, код пожаловался, что не знает, какую конечную точку использовать.

Я посмотрел в файле Web.config и, конечно же, мастер создал две привязки и, следовательно, две конечные точки. При добавлении любой конечной точки к сервисному вызову все работает отлично.

Тогда мой вопрос просто призван помочь мне понять, почему у меня есть две привязки, и если есть какая-то причина, по которой я должен использовать одну поверх другой? Или я должен удалить один, и если да, то какой?

Привязки для меня выглядят совершенно по-разному, и я предполагаю, что используются два разных протокола (но оба они помечены как SOAP, так что ...). Я очень "ориентирован на передний конец" и не очень часто вмешиваюсь в механику бэкэнда, поэтому я и спрашиваю. Я выложу привязки ниже.

    <bindings>
  <basicHttpBinding>
    <binding name="ServiceSoap" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
  <customBinding>
    <binding name="ServiceSoap12">
      <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
        messageVersion="Soap12" writeEncoding="utf-8">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      </textMessageEncoding>
      <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
        maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
        bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
        keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
        realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
        useDefaultWebProxy="true" />
    </binding>
  </customBinding>
</bindings>
<client>
  <endpoint address="http://someURL.asmx" binding="basicHttpBinding"
    bindingConfiguration="ServiceSoap" contract="ServiceReference.ServiceSoap"
    name="ServiceSoap" />
  <endpoint address="http://someURL.asmx" binding="customBinding"
    bindingConfiguration="ServiceSoap12" contract="ServiceReference.ServiceSoap"
    name="ServiceSoap12" />
</client>

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Я считаю, что сервис предлагает SOAP 1.1 и SOAP 1.2. Вам нужно будет указать конфигурацию клиента для использования в конструкторе справочного класса службы:

var client = new MyClient("ServiceSoap12");
1 голос
/ 16 февраля 2012

Похоже, эта служба просто выставила две конечные точки с разными кодировками.

Вы бы также увидели две привязки, если бы разрешались http и https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...