我創建了一個Windows服務,用於執行多個週期性操作(如備份,健全性檢查,報告生成等)的自動化過程(.Net代碼)。構建項目後,我用installutil
安裝服務。一切都很好。Windows服務無法讀取來自App.config的參數
我決定在App.config
文件中爲這些自動過程移動各種「靜態」參數。我用installutil /u
卸載了以前版本的服務,並構建了該項目的新版本。在我的構建輸出文件夾中,有一個AppName.exe
文件和一個AppName.exe.config
文件,正如我所期望的那樣。我以管理員身份從VS 2012開發人員命令提示符中安裝了installutil
的新版服務。
問題是服務似乎無法從ConfigurationManager
讀取配置文件。 ConfigurationManager.AppSettings("paramname")
的調用不會失敗,但生成的參數值是空字符串。據我所知,問題出現在所有參數上,而不僅僅是特定的參數。參數位於<appSettings>
部分,位於<configuration>
下,就像我之前在多個項目中做過多次一樣。
我不知道它是否可以幫助,但我的服務運行在LocalSystem
帳戶上,並在安裝後和Windows自動啓動。
我做錯了什麼?
編輯:我已經嘗試卸載/重新安裝服務(多次),就像一些stackoverflow答案建議。另外,我不想在運行時更新/刷新文件。
根據您對服務進行編碼的方式,您可能需要重新啓動服務才能獲取app.config中的任何更改。 例如,如果它在OnStart期間讀取配置節並將它們存儲在變量中,那麼除非您重新啓動服務,否則它將不會接受更改。所以問題是:你在哪裏調用'ConfigurationManager'?我甚至在一個exe文件中看到過你有多個服務的情況,並且在所有這些服務都重新啓動之前,它並不一定會收到更改。 – NotMe
我在每個自動化過程(在OnStart期間調用它)的構造函數中都調用了'ConfigurationManager',但我沒有在運行時做任何更改,所以我認爲它不應該成爲問題。另外,我的項目中只有一個服務和一個安裝程序。 –
有趣的是,它沒有失敗,但沒有得到價值。你能發佈加載應用程序設置的實際代碼和配置文件的副本嗎? – NotMe