Zan*_*son 26 iis ssl https wcf wcf-binding
我已经编写了一个WCF Web服务供Silverlight应用程序使用.最初,该服务仅需要基本的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>
Run Code Online (Sandbox Code Playgroud)
然而不幸的是,这有一个问题.
此Web服务需要部署到数百个客户的服务器上,并非所有服务器都使用https.将其部署到未在IIS中设置https绑定的服务器会导致其失败.如果在IIS中没有设置https绑定,是否有办法在web.config中默认使用这两种绑定而不会死亡?
我们已经找到了解决此问题的可能方案,但它并不能很好地满足我们的部署要求.
之前有没有其他人遇到这样的事情,你是怎么解决的?
Zan*_*son 10
最后,我们决定使用configSource属性为web.config的绑定,行为和服务部分使用外部文件,如下所示:
<bindings configSource="bindings.config" />
<behaviors configSource="behaviors.config" />
<services configSource="services.config" />
Run Code Online (Sandbox Code Playgroud)
这样,我们默认将其部署为仅为http访问设置的外部文件,并向客户提供有关如何编辑外部文件以设置https访问权限的说明(或协助他们).这也允许我们将未来的更改部署到web.config本身,而不会覆盖外部配置文件.
Kri*_*ran 10
如果您不使用安装程序,则此页面上接受的答案没有多大用处.正确的答案在于OP自己稍后编辑,所有人需要做的是绑定IIS中的http和https端口,然后使用下面的配置.
<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>
Run Code Online (Sandbox Code Playgroud)
这对我来说很好!
| 归档时间: |
|
| 查看次数: |
25400 次 |
| 最近记录: |