Веб-API хоста как служба Windows, использующая OWIN
Я пытаюсь запустить приложение Web API в качестве службы Windows, используя OWIN. Тем не менее, я получаю следующее сообщение при попытке запустить службу:
Служба [ServiceName] на локальном компьютере запускается, а затем останавливается. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.
По какой-то причине мой сервис не понимает, что он должен продолжать слушатьHTTP: // локальный: 9000
Решение VS состоит из двух проектов: веб-API и службы Windows.
В проекте службы Windows у меня есть:
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service()
};
ServiceBase.Run(ServicesToRun);
}
}
public partial class Service : ServiceBase
{
private const string _baseAddress = "http://localhost:9000/";
private IDisposable _server = null;
public Service()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_server = WebApp.Start<Startup>(url: _baseAddress);
}
protected override void OnStop()
{
if (_server != null)
{
_server.Dispose();
}
base.OnStop();
}
}
ВOnStart Запускать относится кЗапускать класс в проекте Web API:
public class Startup
{
public void Configuration(IAppBuilder builder)
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute("Default",
"{controller}/{id}",
new { id = RouteParameter.Optional });
builder.UseWebApi(config);
}
}
(Он также содержит некоторые конфигурации для Unity и ведения журналов.)
Я предполагаю, что часть установщика проекта службы Windows в основном не имеет значения, хотя было бы полезно знать, что у меня есть:
this.serviceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalService;
Что я пробовал:
Чтобы разместить веб-API с помощью консольного приложения, а затем разместить консольное приложение в качестве службы Windows. Но даже если я включил Console.ReadKey (), он просто остановился.Чтобы следовать этому руководству:Owin-WebAPI-Сервис Странно то, что я могу заставить его сервис работать, но когда я пытался изменить свой код, чтобы он соответствовал его настройкам, я продолжал получать ту же ошибку.Полный исходный код: github.com/SabrinaMH/RoundTheClock-Backend/tree/exploring_hosting