【发布时间】:2011-06-15 10:19:58
【问题描述】:
我编写了一个供 Silverlight 应用使用的 WCF Web 服务。最初,该服务只需要一个基本的 http 绑定。我们现在需要能够部署服务以在 http 和 https 下使用。我发现 web.config 的一些设置允许我执行以下操作:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="SilverlightFaultBehavior">
<silverlightFaults />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="CxtMappingWebService.CxtMappingWebServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="SecureHttpBinding">
<security mode="Transport" />
</binding>
<binding name="BasicHttpBinding">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="CxtMappingWebService.CxtMappingWebService" behaviorConfiguration="CxtMappingWebService.CxtMappingWebServiceBehavior">
<endpoint address="" bindingConfiguration="SecureHttpBinding" binding="basicHttpBinding" contract="CxtMappingWebService.ICxtMappingWebService" behaviorConfiguration="SilverlightFaultBehavior" />
<endpoint address="" bindingConfiguration="BasicHttpBinding" binding="basicHttpBinding" contract="CxtMappingWebService.ICxtMappingWebService" behaviorConfiguration="SilverlightFaultBehavior" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
不幸的是,这有一个问题。
此网络服务需要部署到我们客户的数百台服务器上,而且并非所有这些服务器都将使用 https。将其部署到没有在 IIS 中设置 https 绑定的服务器会导致它失败。如果 IIS 中没有设置 https 绑定,有没有办法在默认情况下在 web.config 中同时拥有这两个绑定而不会死掉?
对于这个问题,我们有一个可能的解决方案,但它并不能很好地满足我们的部署要求。
以前有没有人遇到过这样的事情,你是怎么解决的?
【问题讨论】:
-
什么是silverlightFaults?
标签: wcf iis ssl https wcf-binding