具有自定义绑定的SSL WCF

时间:2009-07-15 01:58:42

标签: wcf configuration silverlight-3.0

有没有人尝试在WCF Web服务中使用自定义绑定和SSL?我已经看到了一些关于如何使用basicHttpBinding和wsHttpBinding执行此操作的示例,但对于customBinding,等效总是失败。特别是我目前正在使用的(最成功的配置)看起来像这样:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
    </serviceHostingEnvironment>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <customBinding>
        <binding name="binaryHttps">
          <binaryMessageEncoding />
          <httpsTransport />
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="MyService">
        <host>
          <baseAddresses>
            <add baseAddress="https://(myserver)/"/>
          </baseAddresses>
        </host>
        <endpoint address=""
      binding="customBinding" bindingConfiguration="binaryHttps"
      contract="MyService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

这实际上允许我们从Web访问服务,获取它的WSDL并在visual studio中添加服务引用,但是当我们真正尝试在Silverlight-3应用程序中使用它时,它只是无限期地坐在那里等待为了回应,永远不会超时。它实际上最终会让我在我的机器上有一段时间内存在低内存问题(内存为6GB)。奇怪的是,所有这些在开发环境(严格使用VS应用程序主机)中完美地工作(并且仍然存在),直到我们尝试将其部署到具有真正SSL证书的实际服务器时才会出现所有这些问题突然出现。

我已经相当详尽地搜索了这个问题的解决方案,但到目前为止还没有找到任何东西并且已经尝试过几乎所有东西 - 那里有没有人在那之前遇到过这种情况并且绕过它?

2 个答案:

答案 0 :(得分:1)

事实证明问题不在于我们的web.config,而是与IIS 7和通配符SSL证书的问题有关。

即,在将IP绑定到SSL连接和证书时,IIS 7不允许您指定主机名。我猜这是因为它需要一个非通配符SSL证书,它可以从中提取显式主机名。我们最终要做的是进入{WindowsDir} \ {System32} \ {Inetsrv} \ {config}中的applicationHost.config文件,找到带有我们Web服务绑定IP地址的条目并将其明确更改为(ip ):(主机名)。然后它甚至在IIS配置GUI中正确显示。

完成此操作后,我们完全关闭了所有服务器上除SSL通道以外的所有服务器,一切都运行良好。

感谢上帝结束了!

答案 1 :(得分:-1)

使用SSL的AFAIK存在性能问题。我们正在使用WCF behiovr进行身份验证。我们使用的方式是Silverlight =&gt; ASP.NET =&gt; WCF。我们在Silverlight和WCF中配置了Endpoint behivor。每当我们调用服务时,我们都会传递令牌以进行身份​​验证。

您是说可以在Silverlight的ClientConfig中使用自定义绑定吗?