如何启用WCF服务https并在Silverlight中使用它?

时间:2011-03-17 07:30:47

标签: silverlight wcf httpservice

我有一个Silverlight客户端,目前无条件地与WCF服务通信。

1>我想保护WCF服务。(启用https) 2>我想在silverlight客户端中引用安全的wcf服务。

任何人都可以帮忙配置服务吗?

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>

我收到以下错误消息:

找不到与绑定BasicHttpBinding绑定端点的方案https匹配的基址。注册的基地址方案是[http]。

2 个答案:

答案 0 :(得分:2)

您需要纠正的主要部分是绑定和服务行为,如以下配置中的givn

1)在binding =“basicHttpBinding”的地方使用binding =“ wsHttpBinding ” 2)在绑定位置=“mexHttpBinding”使用binding =“ mexHttpsBinding ” 3)在服务行为服务中元数据 httpsGetEnabled =“true”

您可以在https here

上找到配置WCF的非常简单的步骤

答案 1 :(得分:-2)

尝试将baseAddresses部分添加到service元素中:

<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>