WCF自托管服务可以有初始化逻辑吗?

时间:2010-08-10 17:50:34

标签: wcf initialization service

我在VS2010中创建了一个WCF服务库,可以通过从项目的右键菜单中选择Debug-> Start New Instance来运行该服务。

我可以进一步定义一些在服务启动之前执行的初始化逻辑吗?

编辑:

我尝试实现的是初始化NHibernate和其他几个元素,以便在服务启动时它们就绪。

1 个答案:

答案 0 :(得分:7)

如果您是自托管(即自己编写WCF主机) - 确保没问题,请在.Open()上致电ServiceHost之前执行您需要做的任何事情。

ServiceHost host = new ServiceHost(typeof(YourServiceClass));

// do your initialization here
........

host.Open();

如果您使用IIS或WAS或AppFabric来托管您的WCF服务:我对此表示怀疑,因为这些是“基于消息的”激活服务器,例如:当请求进来时,他们启动服务主机以按需处理请求,如果您使用常规ServiceHost类进行托管,我不知道有任何扩展点进入初始化过程

那说:您当然可以定义自己的ServiceHost后代 - 从ServiceHostServiceHostBase派生您的自定义服务主机 - 这些应该为您提供进入初始化过程的要点(覆盖InitializeRuntime方法或回复Opening事件)。

请参阅MSDN文档: