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