Windows服务配置文件C#

我使用Visual Studio 2008 / C#开发了一个Windows服务应用程序。

我在项目中有一个app.config文件。 安装后,app.exe.config文件出现在可执行文件旁边,但当我尝试通过ConfigurationManager.AppSettings访问它们时,它似乎没有从中读取值。

它是否将配置文件复制到别处或是否存在其他一些我不知道的问题?

提前致谢,

马丁。

编辑:配置文件名实际上是my_exe_file_name.exe.config,它看起来像:

      

而我正在尝试阅读:

 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中的条目时等待查看应用程序错误不存在。