Хостинг ASP.NET Core в качестве службы Windows
Как я понял в 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 (хотя я изменил framework на net461 и добавил некоторые зависимости в project.json).
После публикации сdotnet publish
и создание службы Windows сsc create
Я могу успешно запустить службу, но не могу связаться ни с одним из моих контроллеров (порты не перечислены). Я предполагаю, что я делаю что-то не так.
Поэтому я думаю, что главный вопрос заключается в том, как создать самодостаточный веб-API и запустить его в качестве службы Windows. Все найденные решения не работают после обновления RC2.