如何保持应用实例Web API网络核心

时间:2019-10-15 08:36:42

标签: c# asp.net-web-api

我在UI端使用开始/停止按钮,并且在Web Api上有这些方法。 当用户界面调用启动方法web Api时,程序将启动。现在,用户界面要停止当前实例 但控制器Web Api创建新实例:) 如何保留应用实例the

这是我的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 :(得分:0)

如果您需要一个IService实例,该实例将在请求之间共享,则可以将IService注册为一个实例。

为此,请将此代码添加到Startup.cs

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

然后,将此代码传递给ValuesController

的构造函数
public ValuesController(IService service)
{
    _service = service;
}

并删除此行

_service = ServiceFactory.GetAppService();