在没有OperationContext.Current的情况下查找服务实现的端点地址

时间:2009-08-06 20:47:22

标签: wcf

我有一个WCF服务,我希望根据配置的EndpointAddresses为服务实现的一些不同合同做一些初始化类型的操作。

该服务可以(并且是)在几个不同的服务主机中托管。有一个创建服务主机的控制台应用程序,一个创建服务主机的Windows服务,它位于IIS主机中,我也非常希望能够使用Visual Studio服务主机进行调试。

有没有办法获得对创建服务实例的ServiceHostBase的引用,而不是在服务操作中?或者更好(读取:更棘手)的方法来确定服务正在服务的端点?

1 个答案:

答案 0 :(得分:1)

让我看看我是否直截了当:您有一个从多个ServiceHosts公开的服务实现,并且您想为每个服务主机做一些不同的初始化?或者它是否为每个端点暴露?

听起来我觉得这里有一些选项,但这取决于你想要做什么。如果初始化是每个主机,那么为什么不只是使用自己的ServiceHost实现并在那里进行初始化而不是服务?。

我特别要问这个问题,因为从您的描述中不清楚您的服务的实例模式是什么,或者您希望何时运行初始化代码。

如果由于某种原因你不能这样做,另一个值得探索的选择可能是在ApplyDispatchBehavior()期间在自定义IServiceBehavior中进行初始化,在那里你可以访问服务主机和服务描述。

相关问题