Запустите NET Базовая служба как «Сетевая служба» - PullRequest
0 голосов
/ 14 января 2020

Я получаю сообщение об ошибке «служба не ответила на запрос запуска или управления своевременно» (1053) при попытке запустить. NET Базовую службу как «NT Authority \ NetworkService» или «NT Authority \ LocalService». Но он отлично работает как "NT Authority \ System".

Это полный код службы, которую я пытаюсь запустить (для целей тестирования):

using System.ServiceProcess;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            ServiceBase.Run(new ServiceBase());
        }
    }
}

И csproj file:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.ServiceProcess.ServiceController" Version="4.7.0" />
  </ItemGroup>

</Project>

После сборки проекта я скопировал файлы в другую папку с разрешениями для учетных записей служб (чтобы предотвратить ошибку 5: доступ запрещен).

Запуск от имени системы :

$ sc create ConsoleApp1 binPath= "c:\Test\ConsoleApp1.exe" obj= "NT Authority\System"
[SC] CreateService ÊXITO

$ sc start ConsoleApp1

NOME_DO_SERVIÇO: ConsoleApp1
    TIPO                       : 10  WIN32_OWN_PROCESS
    ESTADO                     : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
    CÓDIGO_DE_SAÍDA_DO_WIN32   : 0  (0x0)
    CÓDIGO_DE_SAÍDA_DO_SERVIÇO : 0  (0x0)
    PONTO_DE_VERIFICAÇÃO       : 0x0
    AGUARDAR_DICA              : 0x7d0
    PID                        : 11288
    SINALIZADORES              :

$

Запуск от имени NetworkService:

$ sc create ConsoleApp1 binPath= "c:\Test\ConsoleApp1.exe" obj= "NT Authority\NetworkService"
[SC] CreateService ÊXITO

$ sc start ConsoleApp1
[SC] StartService FALHA 1053:

O serviço não respondeu à requisição de início ou controle em tempo hábil.

$

Служба не ответила на запрос запуска или управления своевременно

Мне удалось заставить его работать как «NetworkService» после добавления этой учетной записи в группу «Администраторы», но я бы не стал делать это на рабочем сервере.

1 Ответ

0 голосов
/ 14 января 2020

Проблема возникла из-за отсутствия ссылочных сборок, которые не являются частью NET Core Runtime. Я обнаружил это, запустив исполняемый файл в консоли вместо запуска его в качестве службы. К сожалению, сервисный контроллер Windows не может регистрировать эти ошибки.

Консоль vs2017 не может публиковать sh NET Основные консольные проекты с использованием шаблона «Microsoft. NET .Sdk», поэтому я переключился на 'Microsoft. NET .Sdk.Web' и опубликовал, затем все необходимые сборки были скопированы в целевую папку.

vs2017 уже скопировал эти сборки в папку bin автоматически для NET Core 3.1, но не для NET Core 2.2.

...