Служба Windows с использованием C # - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь разработать службу Windows, которая прослушивает слушатель rabbitMQ и сохраняет сообщения, которые слушает, в базу данных ... код отлично работает в режиме отладки, но не работает как служба Windows ....

Код отладки и обслуживания:

if (!Environment.UserInteractive)
{
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new RabService() 
    };
    ServiceBase.Run(ServicesToRun);
}
else
{
    var service = new RabService();
    service.OnStart(null);
    Thread.Sleep(Timeout.Infinite);
}

Будем благодарны за любые входные данные!

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Если ваша строка подключения к базе данных использует безопасность Windows, возможно, ваш отлаженный пользователь сможет получить доступ к базе данных.Но служба Windows работает под другим пользователем.

Поэтому, чтобы отказаться от этой опции, я бы порекомендовал следующее:

  • Перейдите в окно служб.cmd SERVICES.MSC
  • Поиск службы Windows
  • Открыть свойства
  • Свойства входа в систему
  • Выберите «Эта учетная запись» и укажите учетную запись, которая будет предоставленадля доступа к базе данных.

Затем перезапустите службу Windows и отладьте ее .

С уважением,

1 голос
/ 29 июня 2011

Пожалуйста, проверьте, выполнили ли вы следующие шаги:

  1. После создания проекта службы Windows перейдите в представление дизайна класса службы (просто дважды щелкните класс service1.cs).

  2. В представлении конструктора щелкните правой кнопкой мыши и выберите «Добавить установщик». Это создаст класс установщика с именем ProjectInstaller.cs. Без ProjectInstaller.cs или каких-либо ошибок в настройке ProjectInstaller.cs может привести к не отображению службы в консоли служб.

  3. Перейдите в представление конструктора ProjectInstaller.cs, где вы найдете два установщика ->

    а. ServiceInstaller1

    б. ServiceProcessInstaller1

  4. Щелкните правой кнопкой мыши ServiceInstaller1 и перейдите на вкладку свойств

    а. Отредактируйте имя ServiceName, указав имя, которое вы хотите видеть в сервисной консоли

    б. Измените StartType на Автоматический.

  5. Щелкните правой кнопкой мыши ServiceProcessInstaller1 и перейдите на вкладку свойств

    а. Изменить учетную запись на LocalService

Сохраните и попробуйте.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...