0

我写了一个自定义的 Windows 服务来处理一些文件清理、编辑等。在这个程序的 OnStart 方法中,我有:

timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = Convert.ToInt32(System.Configuration.ConfigurationSettings.AppSettings["RunInterval"]) * 60 * 60 * 1000);  //yeah, i know its an old method
timer.Enabled = true;

但是 AppSettings["RunInterval"] 每次都返回 null ,即使我有:

<appSettings>
    <add key="RunInterval" value="8" />
    <!-- Lots of other stuff -->
</appSettings>

在 .exe.config 中。为什么要这样做?配置文件是在 OnStart 之后才加载的吗?好像没有多大意义。

4

3 回答 3

1

您绝对可以在 OnStart 处理程序中读取 app.config 设置。一定有其他事情发生。您是否已验证您的值确实存在于 bin 文件夹中的 app.config 中?

于 2012-05-04T18:39:40.517 回答
0

我有这个完全相同的问题。尝试从 applicationSettings 或 appsettings 中提取值在 OnStart 方法中不起作用。

我最终将配置数据的提取从 OnStart 方法转移到了 Windows 服务的构造函数,这确实有效。

从头开始,我的整个问题都是由配置问题引起的。包括 defaultDatabase 是导致问题的原因。我不确定为什么,可能缺少 Patterns and Practices dll。

<dataConfiguration defaultDatabase="LiveDatabase"/>
于 2014-03-18T08:01:16.810 回答
0

您使用的是哪个版本的 C#?从 .NET 2.0 开始不推荐使用System.Configuration.ConfigurationSettings 。请改用System.Configuration.ConfigurationManager

于 2012-05-04T18:43:04.613 回答