Как сохранить ядро ​​веб-интерфейса приложения? - PullRequest
0 голосов
/ 15 октября 2019

Я использую кнопки Пуск / Стоп на стороне пользовательского интерфейса, и у меня есть эти методы на веб-API. Программа запускается, когда пользовательский интерфейс вызывает метод запуска веб-API. Теперь пользовательский интерфейс хочет остановить текущий экземпляр, но веб-интерфейс контроллера Api создает новый экземпляр :) Как сохранить экземпляр приложения؟

, вот мой код API:

namespace Example.Controllers
{
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class ValuesController : ControllerBase
    {
        private IService _service;

        public ValuesController()
        { }

        [HttpPost]
        public IActionResult Start(Data data)
        {
            _service = ServiceFactory.GetAppService();
            _service.Start();
            return Ok();
        }

        [HttpPost]
        public IActionResult Stop()
        {
            _service.Stop();
            return Ok();
        }
    }
}

1 Ответ

0 голосов
/ 16 октября 2019

Если вам нужен один экземпляр IService, который будет распределяться между запросами, вы можете зарегистрировать IService в качестве одиночного.

Для этого добавьте этот код в Startup.cs

services.AddSingleton<IService>(s = ServiceFactory.GetAppService());

, затем этот код в конструктор ValuesController

public ValuesController(IService service)
{
    _service = service;
}

и удалите эту строку

_service = ServiceFactory.GetAppService();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...