Веб-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

Ответы на вопрос(0)

Ваш ответ на вопрос