У меня есть конечная точка службы WCF, которая использует WsHttpBinding и BasicHttpBinding с разными адресами, чтобы они могли совместно использовать конечную точку. На BasicHttpBinding нет безопасности. BasicHttpBinding отлично работает, когда моя служба и клиент находятся на одном компьютере. Когда они находятся на разных машинах, BasicHttpBinding не работает, и я получаю эту ошибку в журнале трассировки службы: Сертификат службы не предоставляется. Укажите сертификат службы в ServiceCredentials.
Ошибка перестанет происходить, если я удалю WsHttpBinding из конфигурации службы.
Web.config службы:
<bindings>
<basicHttpBinding>
<binding name="MyBasicBinding"
maxBufferPoolSize="5242880"
maxReceivedMessageSize="5242880" />
</basicHttpBinding>
<wsHttpBinding>
<binding name="MyWsBinding"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="5242880"
maxReceivedMessageSize="5242880"
allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Message">
<message clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="MyService">
<endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="MyBasicBinding"
contract="MyFramework.IMyService" bindingNamespace="http://MyFramework/Services/"/>
<!-- The basic binding fails when the WS binding is present.
If I remove the WS binding, the basic binding will work. -->
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="MyWsBinding"
contract="MyFramework.IMyService" bindingNamespace="http://MyFramework/Services/"/>
</service>
</services>
К вашему сведению, я использую другой адрес для базовой привязки, что позволяет двум привязкам использовать одну и ту же конечную точку. URL-адрес для WsHttpBinding - http://server/MyService.svc
, а для BasicHttpBinding - http://server/MyService.svc/basic
.
Почему наличие WsHttpBinding заставляет BasicHttpBinding ожидать сертификат?