我在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();
}
}
}
答案 0 :(得分:0)
如果您需要一个IService
实例,该实例将在请求之间共享,则可以将IService
注册为一个实例。
为此,请将此代码添加到Startup.cs
services.AddSingleton<IService>(s = ServiceFactory.GetAppService());
然后,将此代码传递给ValuesController
public ValuesController(IService service)
{
_service = service;
}
并删除此行
_service = ServiceFactory.GetAppService();