0

我正在使用 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>

我用谷歌搜索,发现我必须将 securityMode 设置为传输,但是当我尝试在我的 WP 应用程序中更新服务引用时,它给了我一个例外。你能帮我吗,如何实现这一点,数据将被加密?非常感谢!

编辑

这是错误:

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

当我在客户端更新服务参考时,我得到了这个。

4

2 回答 2

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"/>
于 2013-04-03T22:22:42.367 回答
0

如果您在 IIS 中托管 WCF 服务,请确保您已使用 SSL 证书配置了 https 绑定。看看这个看看如何配置它。如果您是自托管服务,请确保添加如下基地址:

        <host>
          <baseAddresses>
            <add baseAddress="https://[machineName]/Service.svc"/>
          </baseAddresses>
        </host>
于 2013-04-03T20:21:46.900 回答