我正在使用前端Angular 6和后端.net core 2的应用程序。
我希望在某种情况下,执行存储在数据库(MySQL)中的过程,无论用户继续做什么,都要花几分钟的时间才能执行。我不需要从该过程中收集任何结果。
我如何以这种方式启动它,以便即使用户关闭浏览器也能继续运行?
我尝试了几种方法...
[HttpGet]
[Route("Check/{idCheck}")]
public async Task ComprobarDatos(int idCheck)
{
try
{
int? timeout = _context.Database.GetCommandTimeout();
_context.Database.SetCommandTimeout(600);
await _context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
.ConfigureAwait(false);
if(timeout!= null && timeout > 0)
{
_context.Database.SetCommandTimeout(timeout);
}
}
catch (Exception ex)
{
_logger.LogError("Ocurrió un problema ejecutando el procedimiento CheckProcesscon id {0}: " + ex.Message, idCheck);
}
}
我也尝试过:
public IActionResult ...
...
_context.Database.ExecuteSqlCommand("call CheckProcess({0});", idCheck);
return Ok();
并且:
public IActionResult ...
...
_context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
.ConfigureAwait(false);
return Ok();
并且:
public IActionResult ...
...
_context.Database.ExecuteSqlCommandAsync("call CheckProcess({0});", idCheck)
.ConfigureAwait(true);
return Ok();
并且它总是等待存储过程完成以继续执行代码。
谢谢!