Cuando cancelo mi solicitud del navegador a un activador HTTP, no se cancela y continúa la ejecución cuando está alojado en Azure.
Mi ejemplo de función:
[FunctionName("Test")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, CancellationToken cancellationToken, ILogger log) { var allCancellationTokens = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, req.HttpContext.RequestAborted); await Task.Delay(30000, allCancellationTokens.Token); if (allCancellationTokens.IsCancellationRequested) { log.LogInformation("Request was cancelled!"); return new StatusCodeResult(499); } return new OkObjectResult("Complete"); }He estado probando la cancelación a través de Postman y axios cancel tokens. Funciona cuando ejecuto el proyecto localmente y lo cancelo, pero no parece cancelarse una vez que se publica en Azure.
Mi resultado esperado sería que arroja una OperationCanceledException si cancelo la solicitud durante la await Task.Delay(30000, allCancellationTokens.Token); Sin embargo, al verificar los registros en Azure Functions, parece que continúa la ejecución y completa la función.
Pasos para reproducir:
CancellationToken es útil para implementar el apagado correcto de su host de tiempo de ejecución de funciones cuando el sistema operativo notifica que algo salió mal para terminarlo, consulte la siguiente respuesta para obtener más información: https://stackoverflow.com/a/63439515/528779