首页 > 解决方案 > 将 NET Core 服务作为“网络服务”运行

问题描述

尝试将 .NET Core 服务启动为“NT Authority\NetworkService”或“NT Authority\LocalService”时,出现错误“服务未及时响应启动或控制请求”(1053)。但它可以作为“NT Authority\System”正常工作。

这是我尝试运行的服务的完整代码(用于测试目的):

using System.ServiceProcess;

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

和 csproj 文件:

<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              :

$

作为网络服务运行:

$ 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.

$

服务没有及时响应启动或控制请求

将此帐户添加到“管理员”组后,我能够使其作为“网络服务”工作,但我不会在生产服务器中这样做。

标签: .net-corewindows-services

解决方案


问题的发生是由于缺少不属于 NET Core 运行时的引用程序集,我通过在控制台中运行可执行文件而不是将其作为服务启动来发现这一点。不幸的是,Windows 服务控制器无法记录这些错误。

vs2017 无法使用“Microsoft.NET.Sdk”模板发布 NET Core 控制台项目,所以我切换到“Microsoft.NET.Sdk.Web”并发布,然后将所有需要的程序集复制到目标文件夹。

vs2017 已经将这些程序集自动复制到 NET Core 3.1 的 bin 文件夹中,但不适用于 NET Core 2.2。


推荐阅读