我的应用必须安装在我客户的网络服务器上。有些客户希望使用SSL,有些则不喜欢。我的应用程序有一个WCF服务,我目前必须进入每个安装的web.config并根据客户端的SSL情况将安全模式从<security mode="Transport">
切换到<security mode="TransportCredentialOnly">
。我能够在运行时设置客户端绑定。但是,我想知道是否有一种方法可以在运行时(在服务器端)设置服务绑定。
答案 0 :(得分:1)
是的,绝对!这取决于您如何托管您的WCF服务。说它必须安装在网络服务器上,我会假设你在IIS中托管。
在这种情况下,你需要创建自己的ServiceHostFactory
后代 - 这真的不是什么大不了的事。
您需要CustomServiceHostFactory
将符合您需求的ServiceHost
实例返回给IIS。
在自定义工厂的CreateServiceHost
方法中,您基本上设置了ServiceHost
并配置了所有端点,行为,绑定等 - 所有这些都在代码中,完全由您完全控制。您可以在此处执行任何操作,根据需要配置服务。
为了托管您的服务。您需要调整MyService.svc
文件以包含CustomServiceHostFactory
作为工厂使用:
<% @ ServiceHost Language="C#" Service="YourService"
Factory="CustomServiceHostFactory" %>
就是这样!
在MSDN上查看Extending Hosting Using ServiceHostFactory以获取更多详细信息,并查看有关示例的A Custom ServiceHostFactory有关CodeProject的文章。