我正在使用WCF服务与DB通信。我的WP7.5应用程序通过WCF将数据发送到DB。我使用basichttpbinding,因为WP只支持这一个。我想以加密形式发送数据。我知道,https用于这些目的。 这是我的web.config:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="baseBinding" >
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehavior" name="TestWCF.WcfNotificationService.WcfNotificationService">
<endpoint address="base" binding="basicHttpBinding" bindingConfiguration="baseBinding"
contract="TestWCF.WcfNotificationService.IWcfNotificationService" />
<host>
<timeouts openTimeout="00:05:00" />
</host>
</service>
</services>
我已经google了,发现我必须将securityMode设置为传输,但是当我尝试在WP应用程序中更新服务引用时,它会给我一个例外。你能帮助我,如何实现这一点,数据将被加密? 非常感谢!
修改
这是错误:
无法找到与具有绑定BasicHttpBinding的端点的https方案匹配的基址。注册的基地址方案是[http]。
当我在客户端更新服务引用时,我得到了这个。
答案 0 :(得分:1)
您的配置似乎有问题。需要配置BasicHttpBinding以支持https。例如,请查看此处:http://blog.adnanmasood.com/2008/07/16/https-with-basichttpbinding-note-to-self/
如前所述,你需要改变:
<basicHttpBinding>
<binding name="baseBinding" >
</binding>
</basicHttpBinding>
到
<basicHttpBinding>
<binding name="baseBinding" >
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
另外,改变
<serviceMetadata httpGetEnabled="true"/>
到
<serviceMetadata httpsGetEnabled="true"/>
答案 1 :(得分:0)
如果您在IIS中托管WCF服务,请确保您使用SSL证书配置了https绑定。查看this以了解如何配置此功能。如果您是自托管服务,请确保添加如下基本地址:
<host>
<baseAddresses>
<add baseAddress="https://[machineName]/Service.svc"/>
</baseAddresses>
</host>