Как прочитать конфигурацию службы Windows при запуске службы Windows? - PullRequest
4 голосов
/ 08 апреля 2011

Я не могу прочитать appSettings из файла конфигурации (MyService.exe.config) моей службы Windows. Обратите внимание, что служба успешно установлена.

  [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.

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

Исключение говорит о том, что с вашим файлом конфигурации что-то не так. Проверьте это внимательно. В исключении или его внутреннем исключении должно быть больше информации, которая даст вам более точное представление о том, что не так.

2 голосов
/ 08 апреля 2011

Вместо этого вы можете попробовать Settings и получить доступ через Properties.Settings.

Проверьте эту ссылку для получения дополнительной информации.

0 голосов
/ 08 апреля 2011

Службы Windows будут размещены в svchost.exe. Таким образом, имя исполняемого файла будет другим, поэтому он не сможет загрузить конфигурацию, созданную .NET. Вы можете

  • попробуйте поставить svchost.exe.config и посмотреть, загружает ли .NET конфиг
  • Используйте ConfigurationManager.OpenExeConfiguration, чтобы открыть определенный файл конфигурации и прочитать значения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...