【发布时间】:2017-07-07 09:46:20
【问题描述】:
我们有一个部署到许多客户端的应用程序,其中一些使用 http,另一些使用 https。在设置我们的应用程序时,web.config 会自动填充 WCF 端点、绑定等。我们希望在应用程序启动时将绑定更改为 https - 而无需修改 .config 文件。这可能吗?例如我们的 .config 文件看起来像(这是一个 sn-p):
<service behaviorConfiguration="Figment.Services.Business.ObjectInfo.ObjectInfoServiceBehavior" name="Figment.Services.Business.ObjectInfo.ObjectInfoService">
<endpoint address="" binding="basicHttpBinding" bindingNamespace="http://Figment.com/webservices/" contract="Figment.Business.Core.ObjectInfo.IObjectInfoService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
根据我的阅读,可以同时拥有 http 和 https 绑定,但我们不希望这样 - 如果是 https,则强制它使用 https。
更改应在服务启动时在 c# 中完成,并在服务运行时永久生效。
【问题讨论】:
-
应用程序是托管服务还是与服务通信?您不想为服务提供两个端点 - http 和 https 吗?请注意,给定的服务实例不能同时有两个绑定 - 它只能有一个。如果服务独立于应用程序,我建议设置两个端点并让各个客户端选择合适的端点。
-
抱歉没有更清楚。这是一个具有相互通信的客户端和服务的应用程序。当我们在内部开发它时,我们使用 http,因为我们没有证书。我们的一些客户拥有自己的证书,并希望它仅通过 https 进行通信。我可以修改客户端应用程序以使用 https,现在我不明白如何修改服务器以从不使用 http,只使用 https。
标签: .net wcf wcf-binding