2010-04-12 91 views
1

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

回答

1

是的,绝对!这取决于你如何托管你的WCF服务。说它必须安装在网络服务器上,我会假设你在IIS中托管。

在这种情况下,您需要创建自己的ServiceHostFactory后代 - 这真的没什么大不了的。

需要您的CustomServiceHostFactory才能将您的ServiceHost实例返回到IIS,并根据您的需要正确配置。

在自定义工厂的CreateServiceHost方法中,您基本上设置了您的ServiceHost并配置了它的所有端点,行为,绑定等等 - 所有代码都在您的完全控制之下。您可以根据需要做任何事情,根据需要配置您的服务。

为了承载您的服务。你需要适应MyService.svc文件包括CustomServiceHostFactory作为工厂使用:

<% @ ServiceHost Language="C#" Service="YourService" 
       Factory="CustomServiceHostFactory" %> 

,这就是它!

检查MSDN上了Extending Hosting Using ServiceHostFactory更多细节,看看在CodeProject上A Custom ServiceHostFactory文章的样本。