WCF - «Не удалось найти канал для получения входящего сообщения. Не найдена ни конечная точка, ни действие SOAP».но только от одного клиента - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть служба WCF, которая отлично работает в производственной среде, за исключением одного нового экземпляра клиента, который не может связаться со службой.

Служба WCF работает по протоколу https в .Net 4.0 в WindowsСистема Server 2008 R2.Все клиенты имеют .Net 4.0 или выше (они не находятся под моим контролем / config).

Включение трассировки WCF в службе, когда этому одному клиенту не удается подключиться, показывает эту ошибку:

"Failedдля поиска канала для получения входящего сообщения. Не найдена ни конечная точка, ни действие SOAP. "

Я проверил, что один и тот же URL-адрес и WSDL используются работающими клиентами и одним нерабочим клиентом.Я МОГУ просматривать веб-сайт с сервисной информацией и WSDL через https с помощью веб-браузера.

Я подозреваю возможный сбой согласования SSL / TLS, но хотел проверить, знакомы ли другие с этим конкретным типом ситуации.

Вот мой сервисный веб-конфиг:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <system.web>
    <compilation targetFramework="4.0" />
  </system.web>
  <system.serviceModel>

    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_INamedService">
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="NamedService.NamedServiceService">
        <endpoint address="/NamedServiceService" binding="basicHttpBinding" bindingNamespace="https://my.domain.com/NamedServiceService" bindingConfiguration="BasicHttpBinding_INamedServiceService" contract="NamedServiceService.INamedServiceService" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpsGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

</configuration>

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Если это один и тот же проект, почему ваша реализация службы и пространство имен интерфейса службы отличаются?В вашей конфигурации могут быть некоторые орфографические ошибки.Я советую вам проверить это внимательно.

name = "NamedService.NamedServiceService" contract = "NamedServiceService.INamedServiceService"

Кроме того, попробуйте использовать следующую конфигурацию для настройкиПротокол https.

<bindings>
      <webHttpBinding>
        <binding name="myhttpsbinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" sendTimeout="00:10:00" receiveTimeout="00:10:00">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
        <binding name="myhttpbinding">
          <security mode="None"></security>
        </binding>
      </webHttpBinding>
</bindings>

Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

0 голосов
/ 26 декабря 2018

Возможно, опечатка в вашей привязке конечной точки Конфигурация:

bindingConfiguration="BasicHttpBinding_INamedServiceService"

Ваша привязка называется: BasicHttpBinding_INamedService not BasicHttpBinding_INamedServiceService

<basicHttpBinding>
    <binding name="BasicHttpBinding_INamedService">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>

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

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