Windows服务无法读取OnStart方法中的appsetttings

时间:2012-05-04 16:33:51

标签: c# asp.net configuration windows-services

我写了一个自定义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之后才加载?似乎没那么有意义。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我有同样的问题。尝试从applicationSettings或实际appsettings中提取值在OnStart方法中不起作用。

我最终将配置数据从OnStart方法拉到了windows服务的构造函数,这确实有效。

从头开始,我的整个问题都是由配置问题引起的。包含defaultDatabase导致了问题。我不确定为什么,可能错过了模式和实践dll。

<dataConfiguration defaultDatabase="LiveDatabase"/>