无法从作为 windows 服务托管的 .net 核心 Rest API 打开 HTTPS 网址

Unable to open HTTPS urls from .net core Rest API hosted as windows service

我是 .net core 的新手,将 .Net core5 RestAPI 作为 WindowsService 托管。 但问题是我能够打开 http 链接,但 https 总是给出错误 ERR_CONNECTION_REFUSED

当我使用 IIS Express 在调试模式下启动它时,我可以同时访问 http 和 https,但是当我发布、创建和启动 windows 服务时,只有 http 链接有效。

正如您在下面看到的,我还配置了 URL 以使用带端口号的 https,运气不好!! 但一个更奇怪的问题是在将其托管为 windows 服务后,我只能在 5000 端口而不是我指定的端口上访问这些 url。

我还在本地主机上安装了证书。

我花了一整天的时间,也是 .net 核心的新手,不确定我做错了什么,任何帮助将不胜感激。

程序类 :

 public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseUrls("https://*:44392");
                webBuilder.UseStartup<Startup>();
            }).UseWindowsService();

launchSetting.Json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:61198",
      "sslPort": 44392
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "ancmHostingModel": "InProcess"
    }
  }
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

我能够通过指定我自己的证书来解决这个问题,Kestrel 可以使用该证书,因为我使用 Windows 服务来托管我的 API 所以它没有检测到现有证书,我使用了这里的教程:

https://www.humankode.com/asp-net-core/develop-locally-with-https-self-signed-certificates-and-asp-net-core

但现在我 运行 进入另一个问题,jwt 身份验证出现问题...

如果我找到 jwt 的解决方案,我会post回来。

System.InvalidOperationException: 方案已经存在: Bearer

更新: 我指定了 Use.Startup() 2 次,这就是我没有通过的原因。