我在VS2010中创建了一个WCF服务库,可以通过从项目的右键菜单中选择Debug-> Start New Instance来运行该服务.
我可以进一步定义一些在服务启动之前执行的初始化逻辑吗?
编辑:
我试图实现的是初始化NHibernate和其他几个元素,以便在服务启动时就绪.
如果你的自我主机(即写你的WCF举办自己) -当然,没问题,做任何你需要你打电话之前做.Open()
的ServiceHost
.
ServiceHost host = new ServiceHost(typeof(YourServiceClass)); // do your initialization here ........ host.Open();
如果您使用IIS或WAS或AppFabric来托管您的WCF服务:我对此表示怀疑,因为它们是"基于消息的"激活服务器,例如,当请求进入时,它们启动服务主机以按需处理请求,如果您使用常规ServiceHost
类进行托管,我不知道有任何扩展点进入初始化过程.
这就是说:你当然可以定义自己的后代ServiceHost
- 从中派生你的自定义服务主机ServiceHost
或ServiceHostBase
- 那些应该给你点进入初始化过程(覆盖InitializeRuntime
方法或响应Opening
事件).
请参阅MSDN文档:
ServiceHostBase自定义服务主机的抽象基类
ServiceHost作为ServiceHostBase
可能继承的具体实现
定制服务主持人解释如何实现这一切的细节