为什么我的启动 ASP.NET Core 应用程序的服务无法使用本地系统帐户运行?

问题描述 投票:0回答:1

我创建了我的应用程序,它运行良好。我在

Program.cs
注册了一项服务:

using Microsoft.Extensions.Hosting.WindowsServices;

var options = new WebApplicationOptions
{
    Args = args,
    ContentRootPath = WindowsServiceHelpers.IsWindowsService()
                                     ? AppContext.BaseDirectory : default
};

var builder = WebApplication.CreateBuilder(options);
...
builder.Services.AddWindowsService();
builder.Services.AddHostedService<MicroinvestIOService>();// this is the name of my service

这是

MicroinvestIOService
中的代码:

public class MicroinvestIOService : BackgroundService
{
    public MicroinvestIOService(ILoggerFactory loggerFactory)
    {
        Logger = loggerFactory.CreateLogger<MicroinvestIOService>();
    }

    public ILogger Logger { get; }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        Logger.LogInformation("MicroinvestIOService is starting.");

        stoppingToken.Register(() => Logger.LogInformation("ServiceA is stopping."));

        while (!stoppingToken.IsCancellationRequested)
        {
            Logger.LogInformation("MicroinvestIOService is doing background work.");

            await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
        }

        Logger.LogInformation("ServiceA has stopped.");
    }
}

然后我向 CMD 注册了我的服务

sc create MicroinvestIO binpath="the path of my exe file"

但是:当启动我的服务的帐户是我当前的电脑管理员时,一切正常。

当我尝试使用“本地系统”帐户运行它时,它可能会在 5 或 10 秒后停止。

我什至尝试创建另一个管理员帐户,但又失败了!

有什么想法吗?

编辑: 我删除了这个: builder.Services.AddHostedService(); 结果是一样的。

c# asp.net-core windows-services
1个回答
0
投票

所以,我做到了!拉尔夫,你说得完全正确!如果没有证书,我的 appsettings.json 中描述的 https 重定向端点将无法工作。我有两个选择:

  1. 要删除 https 端点:

    “红隼”:{ “端点”:{ “http”:{ “网址”:“http://0.0.0.0:5000” }

或 2. 要使用命令“dotnet dev-certs https --trust”为 ASP.NET 生成证书,然后将证书导出到我的工作文件夹中并在 appsettings.json 中进行描述:

  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:5000"
      },
      "Https": {
        "Url": "https://localhost:5001",
        "Certificate": {
          "Path": "D:\\Temp\\MicroinvestIO\\Certificate.pfx",
          "Password": "my password" - used when exporting certificate
        }

      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.