Служба не отвечает на программу c #, которая использует служебный контроллер на Windows Server 2008 R2 - PullRequest
0 голосов
/ 02 марта 2011

У меня есть программа на C #, которая действует как графический интерфейс для службы Windows, которую я создал.Служба может быть остановлена ​​или запущена на основе нажатия кнопки из графического интерфейса ... событие нажатия кнопки запуска вызывает функцию ниже.На моем обычном ПК этот код работает нормально.Однако когда я размещаю это приложение с графическим интерфейсом на своем сервере, оно не запускает и не останавливает службу.Есть ли что-то, что мне не хватает или есть другой процесс для служб сервера по сравнению с обычными службами ПК.Я использую Windows Server 2008 R2 и Vista Business ... Заранее спасибо.

  public static bool StartService(string serviceName, int timeoutMilliseconds)
    {
        ServiceController service = new ServiceController(serviceName);
        try
        {
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
            if (service.Status == ServiceControllerStatus.Running)
                return true;
            else
                return false;



        }
        catch
        {
            // ...
            return false;
        }
    }

1 Ответ

0 голосов
/ 02 марта 2011

Две вещи:

Во-первых, убедитесь, что ваш блок try / catch регистрирует (или иным образом уведомляет вас) обо всех возникших исключениях.Также проверьте журналы событий серверов на наличие ошибок.

Во-вторых, проверьте разрешения учетной записи, на которой запущена ваша программа на сервере.У учетной записи может не быть достаточных разрешений для остановки и запуска вашей службы, в то время как у вашей учетной записи на вашем ПК.

...