Мы хотели бы предоставлять наши службы WCF через REST, а также через TCP, обеспечивая их безопасность с помощью SSL. У нас есть действительный SSL, загруженный в Azure, и соответствующая настройка сопоставления, поэтому переход к https://service.ourdomain.com работает как следует.
Я установил две привязки конечных точек, webHttpBinding для служб REST и настраиваемую привязку типа NetHttpBinding для TCP.
Я думаю, что у меня SSL работает с webHTTP, но когда я пытаюсь включить httpsTransport в пользовательской привязке для NetHTTP, я получаю сообщение об ошибке
«Невозможно добавить транспортный элемент« httpTransport ». Другой транспортный элемент уже существует в привязке. Для каждой привязки может быть только один транспортный элемент ”
Все настройки выполнены в WebRole web.config.
Я взглянул на другие вопросы WCF, представленные людьми из Silverlight, и они помогли с webHTTP через SSL, но бинарные вещи поставили меня в тупик.
Можно ли запускать службы REST и TCP WCF из одного и того же домена SSL, если так, я бы хотел знать?
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="SecureWebHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</webHttpBinding>
<customBinding>
<binding name="NetHttpBinding">
<binaryMessageEncoding />
<!--<httpsTransport authenticationScheme="None" />-->
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="RestService">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="BinaryService">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="RestService" name="WebService.Rest">
<endpoint address="Achievements"
binding="webHttpBinding"
bindingConfiguration="SecureWebHttpBinding"
behaviorConfiguration="webBehavior"
contract="WebService.JSON.IAchievementJSON"/>
</service>
<service behaviorConfiguration="BinaryService" name="WebService.Binary">
<endpoint address="Achievements"
binding="customBinding"
bindingConfiguration="NetHttpBinding"
contract="WebService.BinaryInterfaces.IAchievementBinary"/>
</service>
</services>
</system.serviceModel>