2012-05-04 49 views
1

我寫了一個自定義的Windows服務來處理一些文件的清理,編輯等。在這個程序的OnStart方法,我有:Windows服務的OnStart方法無法讀取appsetttings

timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); 
timer.Interval = Convert.ToInt32(System.Configuration.ConfigurationSettings.AppSettings["RunInterval"]) * 60 * 60 * 1000); //yeah, i know its an old method 
timer.Enabled = true; 

但在.exe.config

<appSettings> 
    <add key="RunInterval" value="8" /> 
    <!-- Lots of other stuff --> 
</appSettings> 

:AppSettings的[ 「RunInterval」]爲空每次回來,即使我有。它爲什麼這樣做?直到OnStart之後,配置文件才被加載?似乎沒有什麼意義。

回答

0

您可以在OnStart處理程序中明確讀取app.config設置。必須有其他事情正在進行。你是否證實你的值確實存在於bin文件夾中的app.config中?

+0

實際上,您可能想要通過ConfigurationSettings.AppSettings嘗試ConfigurationManager.AppSettings - 我始終在服務中使用前者。 –

+0

我會在幾分鐘內嘗試,但我一直在使用舊的方法,因爲我不想在代碼中更改它的每個實例,而且我也不想使用它們兩個,我從來沒有遇到任何問題。當然,這是在MVC應用程序,而不是Windows服務,但我無法想象它會導致這個問題 –

0

我有這個完全相同的問題。嘗試從applicationSettings中獲取值或確實appsettings在OnStart方法中不起作用。

我最終將配置數據從OnStart方法拉到窗口服務的構造函數,它確實工作。

劃痕,我的整個問題是由配置問題引起的。包括一個defaultDatabase導致了這個問題。我不知道爲什麼,可能缺少一個Patterns and Practices DLL。

​​