如何在启动Windows服务时读取Windows服务配置

本文关键字:服务 Windows 读取 配置 启动 | 更新日期: 2023-09-27 17:49:41

我无法从Windows服务的配置文件(MyService.exe.config)中读取appSettings。请注意,服务已成功安装。

  [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
        public class MyService : ServiceBase
        {
            public MyService()
            {
                InitializeComponent();
                ServiceName = ConfigurationManager.AppSettings.Get("ServiceName");
            }
            private void InitializeComponent()
            {
                try
                {
                                    AutoLog = true;
                    CanStop = true;
                }
                catch (Exception e)
                {
                                  // Log error
                }
            }
            static void Main()
            {
                        MyService myService = new MyService ();
                        Run(myService);               
            }
                    protected override void OnStart(string[] args)
            {
                // Code to do necessary things on start
            }
    }

事件查看器中的异常为System.Configuration.ConfigurationErrorsException

哪个是读取Windows服务配置的正确位置? ConfigurationManager.AppSettings总是返回null

如何在启动Windows服务时读取Windows服务配置

该异常表明您的配置文件有问题。仔细检查一下。在异常或它的内部异常中应该有更多的信息,这将给你一个更精确的错误指示。

您可以尝试使用Settings代替,并通过Properties.Settings访问。

查看此链接了解更多信息

Windows服务将托管在svchost.exe中。因此,exe名称将不同,因此它将无法加载由。net创建的配置。你可以

  • 试着放一个svchost.exe.config,看看是否。net加载配置
  • 使用ConfigurationManager.OpenExeConfiguration打开指定的配置文件并读取值