2009-07-15 88 views
3

有没有人曾尝试在WCF Web服务中使用SSL的自定义绑定?我已经看到了很多关于如何使用basicHttpBinding和wsHttpBinding来做到这一点的例子,但是对于customBinding而言,总是失败。具体是什么我目前正与(上最成功的配置还)工作看起来是这样的:具有自定义绑定的SSL WCFs

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

这实际上使我们能够从网络访问服务,得到它的WSDL,并添加在Visual Studio中的服务引用没错,但是当我们实际上尝试并使用它在我们的Silverlight-3应用程序中时,它就会无限期地等待响应并永不超时。实际上,在我的机器上有一段时间(内存为6GB)后,我给了我很少的内存问题。奇怪的是,所有这些在开发环境中(完全使用VS应用程序主机)都能很好地工作(并且仍然如此),直到我们试图将它部署到具有真正SSL证书的实际服务器上时,所有这些问题弹出。

我已经搜索了相当详尽的解决这个问题,但迄今没有发现任何东西,并尝试过几乎所有 - 有没有人在那里遇到过这个,并得到它呢?

回答

1

所以事实证明,问题并不在于我们的web.config,它必须处理IIS 7和通配符SSL证书的问题。

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

做完这些之后,我们完全关闭了所有服务器上除SSL通道以外的所有内容,并且所有内容都运行良好。

感谢上帝,结束了!

-1

AFAIK,使用SSL有性能问题。我们使用WCF behiovr进行身份验证。我们使用的方式是Silverlight => ASP.NET => WCF。我们在Silverlight和WCF中配置了Endpoint behivor。每当我们调用服务时,我们都通过令牌进行身份验证。

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

+0

嗯,我们在Silverlight 3库中的代码中进行绑定,而不是在ClientConfig文件中,但是,在本地计算机上一切正常。直到部署时才出现问题。 – user138420 2009-07-15 03:30:04