WCF在运行时设置服务绑定

时间:2010-04-12 16:31:11

标签: wcf wcf-binding

我的应用必须安装在我客户的网络服务器上。有些客户希望使用SSL,有些则不喜欢。我的应用程序有一个WCF服务,我目前必须进入每个安装的web.config并根据客户端的SSL情况将安全模式从<security mode="Transport">切换到<security mode="TransportCredentialOnly">。我能够在运行时设置客户端绑定。但是,我想知道是否有一种方法可以在运行时(在服务器端)设置服务绑定。

1 个答案:

答案 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的文章。