2011-05-05 56 views
5

我有一些静态变量定义如数据库地址,一些确实数据格式化静态方法的库。在WCF服务应用程序项目中初始化?

我的WCF服务将使用该库和开放式数据库连接。 问题是,如在该库数据库地址的静态变量未初始化,并有通过读取服务器上的文件进行初始化时,应用程序启动起来。

在ASP.NET中,我可以初始化在Global.asax的的Application_Start一切,在Silverlight中的客户端,我可以初始化在app.xml中的Application_Startup一切。 但我如何在WCF服务应用程序项目中初始化?

这WCF服务应用程序将使用Silverlight使用,还不包含多发WCF服务,如果我初始化WCF服务的构造函数,那么我必须为每一个服务做同样的....

在此先感谢,

+0

也许不是很优雅,但你不能简单地设置一个静态布尔值,指示你是否已经从你的wcf应用程序初始化它。 – faester 2011-05-05 20:52:37

+0

听起来是个不错的方法,我想我可能会使用这种方法有没有其他办法做到这一点。谢谢。 – King 2011-05-05 21:01:35

回答

4

有多种方法可以做到这一点。您可以:

  1. 使用自定义的ServiceHostFactory在创建ServiceHost之前初始化库。
  2. 在ServiceLibrary中的某个类中使用静态构造函数(请参阅http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx),并确保在需要使用需要初始化的库之前,以某种方式访问​​该类型(因为这会调用静态构造函数)。
  3. 创建一个自定义WCF ServiceBehavior它执行初始化,并应用到ServiceLibrary内的所有相关服务。 (恕我直言,最优雅的方式...)
+0

方法3有效!谢谢! – King 2011-05-06 16:32:59

相关问题