Как включить службу https в WCF и использовать ее в silverlight? - PullRequest
0 голосов
/ 17 марта 2011

У меня есть клиент Silverlight, который в настоящее время небезопасно взаимодействует со службой WCF.

1> Я хочу сделать службу WCF защищенной. (Https включен) 2> Я хочу сослаться на защищенную службу wcf в клиенте Silverlight.

Может ли кто-нибудь помочь в настройке службы?

Web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"></serviceHostingEnvironment>

<bindings>
  <basicHttpBinding>
    <binding name="MyBasicHttpBinding" >          
      <security mode="Transport" >
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

<services>
  <service behaviorConfiguration="DataService.Service1Behavior"
    name="DataService.Service1">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBinding"
      contract="DataService.IService1">         
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>     
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="DataService.Service1Behavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true" httpsHelpPageEnabled="true" />
    </behavior>      
  </serviceBehaviors>
</behaviors>

Я получаю следующее сообщение об ошибке:

Не удалось найти базовый адрес, который соответствует схеме https для конечной точки с привязкой BasicHttpBinding.Схемы зарегистрированных базовых адресов: [http].

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Основная часть, которую вам нужно исправить, это привязка и поведение службы как givn в следующей конфигурации

1) В месте привязки = "basicHttpBinding" используйте binding = " wsHttpBinding " 2) В месте привязки = "mexHttpBinding" используйте связывание = " mexHttpsBinding " 3) В поведении службы serviceMetadata httpsGetEnabled = "true"

Вы можете найти очень легкошаги для настройки WCF на https здесь

0 голосов
/ 17 марта 2011

Попробуйте добавить раздел baseAddresses в элемент сервиса:

<services>        
  <service behaviorConfiguration="DataService.Service1Behavior"
    name="DataService.Service1">
    <host>
      <baseAddresses>
        <add baseAddress="https://[your url]"/>
        <add baseAddress="http://[your url]"/>
      </baseAddresses>
    </host>
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBinding"
      contract="DataService.IService1">         
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>     
</services>
...