2011-05-05 50 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

相關問題