Не удается открыть службу <MyService>на компьютере '.' - PullRequest
14 голосов
/ 23 июня 2011

У меня есть веб-сайт, созданный на C #, который предназначен для запуска служб на сервере.

Я создал сервис под названием MyService, используя это:

instsrv MyService %systemroot%\system32\srvany.exe

тогда я использую следующий код для его вызова:

ServiceController service = new ServiceController("MyService");
try
{
    service.Start();
}
catch (Exception ex)
{
    Response.Write(ex.Message);
}

но когда я захожу на сайт и запускаю это событие, мне подсказывают

Cannot open <MyService> service on computer '.'

Это из-за проблем с безопасностью или разрешением ?? Любое руководство с четкими шагами высоко ценится.

Ответы [ 4 ]

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

Я действительно решил проблему на вершине сценария.

  • Служба в этом случае «MyService» должна установить для входа в систему учетную запись локальной системы и установить флажок «Разрешить службе взаимодействовать с рабочим столом»
  • В диспетчере IIS создайте пул приложений для определенного веб-сайта. И загрузите сайт в него.
  • Определенный пул приложений Идентификационные данные должны быть предварительно определены в Local Syatem

Это то, что нужно в IIS и services.msc

С другой стороны, все еще будет ошибка в MAC-адресе.
Итак, нам нужен файл, который можно сгенерировать с помощью machineKey Generator .
Сгенерированный machineKey необходим для вставки в тег ниже.

Затем скопируйте весь блок цитаты ниже и вставьте его в Web.config

<pages buffer="false"
enableViewState="false"
enableSessionState="false"
enableViewStateMac="false"
validateRequest="false"
enableEventValidation="false"
viewStateEncryptionMode ="Never"/>

<machineKey 
validationKey="8FCCB821044C5174C551129400F278B5629C64EAC195046DA5FE608EF418913C1139636E13FE  9F8C35AD3C10C394CAC1D9CEBB8B6BDA018165E91136B1AADBE1"
decryptionKey="3F260119F4CC0A0DD8C6B4979C70644A0ED2DD19B3ADB00F85FB7C83634FC544"
validation="SHA1"
decryption="AES"
/>

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

Кроме того, я использую этот код, чтобы не возникало конфликтов при запуске и остановке созданных служб.

if (service.Status == ServiceControllerStatus.Stopped)
        {

            try
            {
                service.Start();

            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

        }
        else
        {
            try
            {
                service.Stop();
                service.Start();

            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

        }

Удачи и спасибо вам, ребята, за помощь.

ссылка: http://www.csharp -examples.net / restart-windows-service /
http://forums.asp.net/t/906759.aspx/3/10

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

с iis (версия 6 и выше), веб-приложения запускаются с использованием пула приложений.Пул приложений EAch может работать с определенным пользователем (идентификатором), который по умолчанию является NETWORK SERVICE.Добавление этого пользователя к локальным администраторам - очень плохая идея.

Возможные способы:

  • Предоставляет этому пользователю необходимую привилегию для запуска / остановки службы, настройки выделенного пула приложений.чтобы использовать эту идентификационную информацию и убедиться, что у учетной записи есть доступ на чтение к пути приложения asp / .net.
  • создайте и отдельную учетную запись.в вашем приложении подключитесь к управлению службами, используя имя пользователя / пароль, которые вы надежно храните в конфигурации (зашифруйте раздел).Я не уверен, что вы можете указать пользователя / пароль для управления службами, но вы можете, по крайней мере, использовать WMI или Process.Start с командой net stop / net start.
1 голос
/ 02 августа 2012

Это может помочь кому-то с такой проблемой:

На моем сервере произошел сбой командной строки powershell с тем же сообщением об ошибке. Это потому, что даже если я вошел в систему как локальный администратор, мне нужно было запускать среду PowerShell от имени администратора (щелкнуть правой кнопкой мыши, запустить от имени администратора).

1 голос
/ 23 февраля 2012

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

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