Не удается открыть службу <MyService> на компьютере. '

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

Я создал службы под названием 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 '.'

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

Ответы

Ответ 1

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

  • Службой в этом случае является "MyService", необходимо установить журнал на "Локальная системная учетная запись" и установить флажок "Разрешить службе взаимодействовать с рабочим столом"
  • В диспетчере IIS создайте пул приложений для определенного веб-сайта. И загрузите его на сайт.
  • Конкретный пул приложений Идентичность должен быть предопределен для Локального Syatem

Это то, что необходимо в IIS и services.msc

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

Затем скопируйте весь блок цитаты ниже и вставьте его в 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

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

Возможные пути:

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

Ответ 3

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

<identity impersonate="true" userName="Domainname\admin" password="123" />

Ответ 4

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

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