【问题标题】:Initialize in WCF Service Application Project?在 WCF 服务应用程序项目中初始化?
【发布时间】:2011-05-05 20:45:13
【问题描述】:

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

我的 WCF 服务将使用该库并打开数据库连接。 问题是,这个库中的数据库地址等静态变量没有初始化,必须在应用启动时通过读取服务器上的文件来初始化。

在 ASP.NET 中,我可以在 Global.asax 的 Application_Start 中初始化所有内容,在 Silverlight 的客户端中,我可以在 App.xml 的 Application_Startup 中初始化所有内容。 但是如何在 WCF 服务应用项目中初始化呢?

这个 WCF 服务应用程序将与 Silverlight 一起使用,可能包含多个 WCF 服务,如果我在 WCF 服务构造函数中进行初始化,那么我必须对每个服务都做同样的事情......

提前致谢,

国王

【问题讨论】:

  • 也许不是很优雅,但你不能简单地设置一个静态布尔值来指示你是否已经从你的 wcf 应用程序初始化它。
  • 听起来不错的方法,我想我可能会使用这种方法,没有其他方法可以做到。谢谢。

标签: c# wcf


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多