Как вызвать метод контроллера при запуске сервиса на Topshelf - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь запустить метод в своем классе контроллера, когда запускается моя служба верхнего уровня, и сейчас я нахожу, как это сделать. Я ищу и не могу найти ответ. Могу ли я вызвать метод моего класса контроллера при запуске службы напрямую или мне нужно сделать HttpClient и вызвать URL-адрес на localhost?

Код:

Program.cs:

        HostFactory.Run(x =>
        {
            x.Service<OwinService>(s =>
            {
                s.ConstructUsing(() => new OwinService());
                s.WhenStarted(service => service.Start());
                s.WhenStopped(service => service.Stop());
            });

            x.RunAsLocalSystem();
            x.StartAutomatically();


            x.SetServiceName("Test Service");
            x.SetDisplayName("Test Service");
            x.SetDescription("Service that Imports / Exports to DB information");
            x.EnableServiceRecovery(recoveryOption =>
            {
                recoveryOption.RestartService(0);
            });

        });

OwinService.cs:

public class OwinService
{
    private IDisposable _webApp;

    public void Start()
    {
        //_timer.Start();
        _webApp = WebApp.Start<ApiConfiguration>("http://+:9000");

    }

    public void Stop()
    {
        //_timer.Stop();
        _webApp.Dispose();
    }

}

OutputController.cs

public class OutputController : ApiController
{
     public void DoSomething() {};
}

Я хочу вызвать DoSomething () при запуске.

...