簡體   English   中英

Windows服務配置文件C#

[英]Windows Service Config File C#

我使用Visual Studio 2008 / C#開發了一個Windows服務應用程序。

我在項目中有一個app.config文件。 安裝后,app.exe.config文件出現在可執行文件旁邊,但當我嘗試通過ConfigurationManager.AppSettings訪問它們時,它似乎沒有從中讀取值。

它是否已將配置文件復制到其他位置,還是存在其他一些我不知道的問題?

提前致謝,

馬丁。

編輯:配置文件名實際上是my_exe_file_name.exe.config,它看起來像:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="RuntimeFrequency" value="3" />

  </appSettings>
</configuration>

而我正在嘗試閱讀:

ConfigurationManager.AppSettings["RuntimeFrequency"]

我不斷看到的調試值是'1'而不是'3'。 我在這里做錯了嗎?

我找到了錯誤,它與文件權限有關。 安裝該服務后,我的本地用戶帳戶無權修改app.exe.config文件。

我用來編輯的工具沒有告訴我它被拒絕保存文件的權限 - 如果有人有興趣那就是記事本++ - 所以我看不出它沒有保存在舊的配置文件中。

現在解決了,謝謝大家。

馬丁。

當您處於調試模式時,請檢查並查看my_exe_file_name.vshost.exe.config中的設置。還要確保在app.config文件中進行調整。 Visual Studio應更新bin / debug文件夾中的最終配置文件。

也許您正在更新錯誤的配置文件。 你應該仔細檢查一下

System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);

通常,對於我編寫的Windows服務,我將appName.exe.config文件放入C:\\ WINDOWS \\ system32 \\

也許你在該目錄中有一個舊版本,即使你已經更新了項目中的配置文件,這也是你的服務獲得價值的地方。

應將App.config文件重命名為your_exe_file_name.exe.config並放在exe文件附近。

您是否可能定義了多個RuntimeFrequency條目實例? ConfigurationManager從上到下讀取文件並單獨處理每個設置。 因此,文件中定義的RuntimeFrequency的最后一個值是它將使用的值。

如果您想確定您的文件是否正在使用,我只需刪除或注釋掉RuntimeFrequency的任何定義(發生復制/粘貼錯誤),並在ConfigurationManager嘗試引用AppSettings中的條目時等待查看應用程序錯誤不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM