Windows 服务无法读取 OnStart 方法中的应用程序

本文关键字:方法 应用程序 OnStart 读取 服务 Windows | 更新日期: 2023-09-27 18:33:07

我写了一个自定义的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;

但是应用程序设置["运行间隔"]每次都返回null,即使我有:

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

在 .exe.config 中。为什么要这样做?配置文件是否要到OnStart之后才加载?似乎这没有多大意义。

Windows 服务无法读取 OnStart 方法中的应用程序

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

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

我遇到了完全相同的问题。尝试从应用程序设置或应用程序设置中提取值在 OnStart 方法中不起作用。

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

刮擦一下,我的整个问题都是由配置问题引起的。包含默认数据库导致问题。我不确定为什么,可能缺少模式和实践 dll。

<dataConfiguration defaultDatabase="LiveDatabase"/>