Windows服务配置文件C#

时间:2009-01-13 15:23:39

标签: c# configuration

我使用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'。我在这里做错了吗?

6 个答案:

答案 0 :(得分:26)

我找到了错误,它与文件权限有关。安装该服务后,我的本地用户帐户无权修改app.exe.config文件。

我用来编辑的工具并没有通知我它被拒绝保存文件的权限 - 如果有人有兴趣那就是记事本++ - 所以我看不出它没有保存在旧的配置文件中。 / p>

现在解决了,谢谢大家。

马丁。

答案 1 :(得分:3)

当您处于调试模式时,请检查并查看my_exe_file_name.vshost.exe.config中的设置。还要确保在app.config文件中进行调整。 Visual Studio应更新bin / debug文件夹中的最终配置文件。

答案 2 :(得分:2)

也许您正在更新错误的配置文件。您应该使用

仔细检查
System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);

答案 3 :(得分:1)

通常,对于我编写的Windows服务,我将appName.exe.config文件放入C:\ WINDOWS \ system32 \

即使你已经更新了项目中的配置文件,也许你在该目录中有一个旧版本,这是你的服务获得价值的地方。

答案 4 :(得分:0)

App.config文件应重命名为your_exe_file_name.exe.config并放在exe文件附近。

答案 5 :(得分:0)

是否可能定义了多个RuntimeFrequency条目实例? ConfigurationManager从上到下读取文件并单独处理每个设置。因此,文件中定义的RuntimeFrequency的最后一个值是它将使用的值。

如果您想确定您的文件是否正在使用,我只需删除或注释掉RuntimeFrequency的任何定义(发生复制/粘贴错误),并在ConfigurationManager尝试引用条目时等待查看应用程序错误在AppSettings中不存在。