Изменение службы WCF для требования SSL

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

«Не удалось найти базовый адрес, соответствующий схеме http для конечной точки с привязкой WSHttpBinding. Зарегистрированные схемы базовых адресов — [https]».

Это происходит только тогда, когда я устанавливаю для сайта значение «Требовать SSL» в IIS 7.5, если я снимаю флажок, он работает нормально.

Вот мой конфиг

<system.serviceModel>    
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior" >
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
      <!-- 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" />
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="wsHttpEndpointBinding">
    </binding>
  </wsHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServiceBehavior" name="WcfService1.Service1">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/WcfService1/"/>
      </baseAddresses>
    </host>
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration=""
      name="wsHttpEndpoint" contract="WcfService1.IService1" />
    <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration=""
      name="MexHttpsBindingEndpoint" contract="IMetadataExchange" />
  </service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

I've tried allsorts and nothing seems to get me there, any help is greatly appreciated!


person WillMcKill    schedule 10.03.2011    source источник


Ответы (2)


Измените конфигурацию привязки:

<bindings>
  <wsHttpBinding>
    <binding name="wsHttpEndpointBinding">
      <security mode="Transport" />
    </binding>
  </wsHttpBinding>
</bindings>

И укажите эту конфигурацию в своем endpoint, задав для ее атрибута bindingConfiguration имя конфигурации.

<endpoint address="" binding="wsHttpBinding" 
  bindingConfiguration="wsHttpEndpointBinding"
  name="wsHttpEndpoint" contract="WcfService1.IService1" />

Вы также можете удалить раздел host с базовым адресом, потому что он не используется при размещении в IIS.

person Ladislav Mrnka    schedule 10.03.2011
comment
Я последовал тому, что вы рекомендовали, и теперь сервис работает на https! Спасибо большое за помощь! - person WillMcKill; 10.03.2011

В дополнение к изменению настроек конфигурации привязки (как упоминал Ладислав)... Измените HTTP в базовом адресе на HTTPS.

person Aliostad    schedule 10.03.2011
comment
Привет Спасибо за ваш ответ. У меня был установлен базовый адрес https '‹add baseAddress=localhost/WcfService1/›' по-прежнему получает то же самое ошибка однако. - person WillMcKill; 10.03.2011
comment
Можешь пожалуйста выложить свою полную привязку после анонимизации? - person Aliostad; 10.03.2011