Настройка привязок webHTTP и NetHTTP через SSL в WCF в Azure - PullRequest
5 голосов
/ 25 января 2010

Мы хотели бы предоставлять наши службы 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>

1 Ответ

1 голос
/ 06 июля 2011

Ваш адрес конечной точки для обеих привязок одинаков. Попробуйте изменить один из них на Достижения / корзина или что-то еще. Это должно решить вашу проблему.

...