2014-03-26 342 views
3

我目前正在使用配置文件(servicename.exe.config)開發基本的Windows服務,該配置文件是您在Visual Studio項目屬性中訪問的默認配置文件。此服務安裝並正確運行,但我無法找到已安裝服務的配置文件。Windows服務配置文件

讀/寫的代碼段:

/// <summary> 
/// An idle period between sending warning emails to avoid spamming 
/// </summary> 
public static short WarningEmailIdleMin 
{ 
    get 
    { 
     return Properties.Settings.Default.WarningEmailIdleMin; 
    } 
    set 
    { 
     Properties.Settings.Default.WarningEmailIdleMin = value; 
     Properties.Settings.Default.Save(); 
    } 
} 

項目設置圖像: Project settings image

  • 服務在本地系統帳戶
  • 下運行時停止服務,改變設置servicename.exe.config(位於可執行文件旁邊)並啓動該服務不會更改該設置(證明其不從該配置文件中提取設置)
  • 當改變在服務代碼的設置,停止和啓動服務,設置有從以前運行更新的值(證明它正在某處保存)
  • AppDomain.CurrentDomain.SetupInformation.ConfigurationFile點以上配置文件

我在defaultpublic用戶帳戶看着的AppData子目錄,我也曾C:\Windows\system32\config\systemprofile\AppData\

看任何幫助,將不勝感激:)

編輯:添加保存/讀代碼片段

+0

你可以顯示代碼從配置文件中讀取該設置的位置嗎? – Szymon

+0

已添加更多以上內容:)乾杯 –

回答

-2

安裝後應該有一個web.config文件,如果您在系統上正確安裝它。
已安裝的服務不應該位於C:\ Windows \ system32 ....它應該位於C:\ inetpub \ wwwroot

+1

我認爲您正在考慮使用網絡服務,我正在使用Windows服務 –

+0

好點 - 我最近一直在使用網絡服務,這縮小了我的觀點。 –

3

您正在使用用戶設置。這些設置不存儲在可執行文件旁邊的servicename.exe.config中。我在MSDN發現了this article。它描述了user.config的存儲位置以及如何獲取該配置的文件路徑。

就個人而言,我不認爲使用用戶設置是默認情況下運行在本地系統帳戶(如果設置不同)的Windows服務的不錯選擇。我建議使用本地文件數據庫(即sqlite或Sqlserver CE等)進行這些設置。

+0

它似乎不是這個文件作爲改變文件和啓動服務不使用更新的值。同時更新服務中的值本身不會更新文件。 –

+0

此外,如果服務以用戶身份運行,則配置文件會正確保存到用戶的AppData文件夾中,但不知道它爲系統用戶存儲的位置 –

+0

這些是不使用用戶設置的原因:)我的一位同事花了一些時間與用戶settigs開發一個destkop應用程序。它運作不好。它正在運行,當應用程序正在運行,我認爲這也是應用程序重新加載時。但它沒有幸免於重啓系統。我們放棄了這個概念,並開始使用數據庫或用戶設置的自定義xml文件。 – pepo