Как я понимаю, в RC2 есть поддержка для размещения приложений в Windows Services. Я попытался проверить его на простой веб-проект api (используя .NET Framework 4.6.1).
Здесь мой код Program.cs:
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() {}
}
}
Все остальные вещи в основном основаны на шаблоне .NET Core (хотя я изменил структуру на net461 и добавил некоторые зависимости в project.json).
После публикации с помощью dotnet publish
и создания службы Windows с помощью sc create
я могу успешно запустить свою службу, но я не могу связаться ни с одним из моих контроллеров (порты не отображаются). Я предполагаю, что я делаю что-то неправильно.
Поэтому я предполагаю, что главный вопрос заключается в том, как сделать самообслуживаемую веб-api и запустить ее как службу Windows. Все найденные решения не работают после обновления RC2.