我有一个WCF服务,我希望根据配置的EndpointAddresses为服务实现的一些不同合同做一些初始化类型的操作。
该服务可以(并且是)在几个不同的服务主机中托管。有一个创建服务主机的控制台应用程序,一个创建服务主机的Windows服务,它位于IIS主机中,我也非常希望能够使用Visual Studio服务主机进行调试。
有没有办法获得对创建服务实例的ServiceHostBase
的引用,而不是在服务操作中?或者更好(读取:更棘手)的方法来确定服务正在服务的端点?
答案 0 :(得分:1)
让我看看我是否直截了当:您有一个从多个ServiceHosts公开的服务实现,并且您想为每个服务主机做一些不同的初始化?或者它是否为每个端点暴露?
听起来我觉得这里有一些选项,但这取决于你想要做什么。如果初始化是每个主机,那么为什么不只是使用自己的ServiceHost实现并在那里进行初始化而不是服务?。
我特别要问这个问题,因为从您的描述中不清楚您的服务的实例模式是什么,或者您希望何时运行初始化代码。
如果由于某种原因你不能这样做,另一个值得探索的选择可能是在ApplyDispatchBehavior()期间在自定义IServiceBehavior中进行初始化,在那里你可以访问服务主机和服务描述。