有没有人尝试在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证书的实际服务器时才会出现所有这些问题突然出现。
我已经相当详尽地搜索了这个问题的解决方案,但到目前为止还没有找到任何东西并且已经尝试过几乎所有东西 - 那里有没有人在那之前遇到过这种情况并且绕过它?
答案 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中使用自定义绑定吗?