Hosting von ASP.NET Core als Windows-Dienst

Wie ich es in RC2 erhalte, wird das Hosten von Anwendungen in Windows-Diensten unterstützt. Ich habe versucht, es in einem einfachen Web-API-Projekt (mit .NET Framework 4.6.1) zu testen.

Hier ist mein Program.cs-Code:

using System;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.WindowsServices;

namespace WebApplication4
{
  public class Program : ServiceBase
  {
    public static void Main(string[] args)
    {
      if (args.Contains("--windows-service"))
      {
        Run(new Program());
        return;
      }

      var program = new Program();
      program.OnStart(null);
      Console.ReadLine();
      program.OnStop();
    }

    protected override void OnStart(string[] args)
    {
      var host = new WebHostBuilder()
      .UseKestrel()
      .UseContentRoot(Directory.GetCurrentDirectory())      
      .UseStartup<Startup>()
      .Build();

      host.RunAsService();
    }

    protected override void OnStop() {}
  }
}

Alle anderen Dinge stammen im Wesentlichen aus der .NET Core-Vorlage (obwohl ich das Framework in net461 geändert und einige Abhängigkeiten in project.json hinzugefügt habe).

Nach Veröffentlichung mitdotnet publish und Windows-Dienst mit @ erstellsc create Ich kann meinen Dienst erfolgreich starten, aber keinen meiner Controller erreichen (Ports werden nicht aufgelistet). Ich gehe davon aus, dass ich etwas falsch mache.

Also, ich denke, die Hauptfrage ist, wie man selbst gehostete Web-API erstellt und als Windows-Dienst ausführt. Alle gefundenen Lösungen funktionieren nach dem RC2-Update nicht mehr.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage