在服务启动之前初始化WCF服务?

时间:2011-05-02 10:32:44

标签: wcf visual-studio-2010 debugging

我创建了一个包含WCF服务的程序集,它在程序集的app.config文件中声明,并在我开始调试客户端应用程序时自动托管。一切正常。

问题是,我需要在托管服务之前运行一些初始化,特别是我需要收集与[ServiceKnownTypes(“RegisterKnownTypes”,typeof(ServiceKnownTypesHelper)一起使用的已知类型列表) ))]属性(我使用MEF从我的程序集中收集知识类型,因此我不能将它们放在配置文件中,因为它们在运行时已知,而不是之前)。

有没有办法在托管WCF服务之前初始化?我可以在服务类的构造函数中初始化东西,但是注册已知类型为时已晚。

1 个答案:

答案 0 :(得分:1)

这通常封装在派生ServiceHost中,您可以通过覆盖OnOpening方法在托管服务之前初始化任何内容。您还可以通过处理默认ServiceHost上的Opening事件来执行初始化,而无需实施新的ServiceHost

编辑:

您已经发现为您的服务库生成的.config文件仅供测试工具WcfSvcHost.exe使用。应用程序本身必须在主app.config / web.config中具有自己的配置,因此您可以根据需要更改库配置以进行调试。没有其他方法可以影响WcfSvcHost.exe中的ServiceHost初始化。