代码之家  ›  专栏  ›  技术社区  ›  mgamer

WCF自托管服务是否具有初始化逻辑?

  •  1
  • mgamer  · 技术社区  · 14 年前

    我在VS2010中创建了一个WCF服务库,可以通过从项目的右键单击菜单中选择“调试”->启动新实例来运行该服务。

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

    编辑:

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

    1 回复  |  直到 14 年前
        1
  •  7
  •   marc_s Anurag    14 年前

    如果你自己主持(也就是自己写WCF主持)-当然,没问题,在你打电话之前做你需要做的任何事。 .Open() ServiceHost .

    ServiceHost host = new ServiceHost(typeof(YourServiceClass));
    
    // do your initialization here
    ........
    
    host.Open();
    

    如果您使用的是IIS、WAS或AppFabric来承载WCF服务:我对此表示怀疑,因为它们是“基于消息的”激活服务器,例如,当请求进入时,它们启动服务主机来按需处理请求,而如果您使用常规的 服务宿主 用于托管的类。

    也就是说:你当然可以定义你自己的后代 服务宿主 -从派生自定义服务主机 服务宿主 ServiceHostBase -这些应该为您提供进入初始化过程的点(覆盖 InitializeRuntime 方法,或响应 Opening 事件)。

    请参阅以下网站上的msdn文档: