Как запустить службу WCF через SSL? - PullRequest
7 голосов
/ 28 апреля 2011

Я использую веб-сервис C # в IIS6 и пытаюсь заставить его работать по SSL. При выполнении tcpdump он показывает начальный вызов как https, но каждый второй вызов по http. Мой SSL-сертификат самоподписан и https прекрасно работает в моем веб-браузере. Я использую PHP SoapClient для клиента.

Кто-нибудь знает, что вызвало бы это?

В wsdl расположение адреса установлено на http. Должно ли это быть https? Как мне это изменить?

<wsdl:service name="Service">
<wsdl:port name="BasicHttpBinding_Service" binding="i0:BasicHttpBinding_Service">
<soap:address location="http://example.com/Service.svc"/>
</wsdl:port>
</wsdl:service>

1 Ответ

10 голосов
/ 28 апреля 2011

Вы должны настроить свой сервис на использование HTTPS:

<bindings>
  <basicHttpBinding>
    <binding name="https">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="metadata">
      <serviceMetadata httpsGetEnabled="true" />  
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="..." behaviorConfiguration="metadata">
    <endpoint address="..." contract="..." binding="basicHttpBinding"
              bindingConfiguration="https" />
  </service>
</services>

Это позволит вызывать вашу службу только через HTTPS, поскольку незащищенная конечная точка не обнаружена. WSDL также будет доступен только через HTTPS, поскольку HTTP GET не включен.

...