在WCF服务应用程序项目中如何进行初始化?

5

我有一个库,定义了一些静态变量,例如数据库地址,还有一些完成数据格式化的静态方法。

我的WCF服务将使用该库并打开数据库连接。

问题是,在此库中的静态变量(例如数据库地址)未初始化,并且必须在应用程序启动时通过读取服务器上的文件进行初始化。

在ASP.NET中,我可以在Global.asax的Application_Start中初始化所有内容,在Silverlight的客户端中,我可以在App.xml的Application_Startup中初始化所有内容。

但是,如何在WCF服务应用程序项目中进行初始化?

这个WCF服务应用程序将与Silverlight一起使用,可能包含多个WCF服务。如果我在WCF服务构造函数中进行初始化,则必须为每个服务执行相同的操作....

谢谢您提前提供的帮助,

King


也许不是很优雅,但你可以简单地设置一个静态布尔值来指示是否已经从你的WCF应用程序进行了初始化。 - faester
听起来是个不错的方法,我想我可能会使用这种方法,因为没有其他办法可以做到。谢谢。 - King
1个回答

4
有多种方法可以做到这一点。您可以:
  1. 使用自定义ServiceHostFactory,在创建ServiceHost之前初始化库。
  2. 在ServiceLibrary中的某个类中使用静态构造函数(请参见http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx),并确保这是某种被访问的类型(因为这会调用静态构造函数),在需要使用需要初始化的库之前。
  3. 创建一个自定义WCF ServiceBehavior来进行初始化,并将其应用于ServiceLibrary中的所有相关服务。(我认为,这是最优雅的方式...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接