When I cancel my request from browser to a HTTP Trigger it does not cancel and continues execution when hosted on Azure.
My function example:
[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");
}
I have been testing the cancellation through Postman and axios cancel tokens. It works when I run the project locally and cancel it, but does not seem to cancel once it's published to azure.
My expected result would be that it throws an OperationCanceledException
if I cancel the request during the await Task.Delay(30000, allCancellationTokens.Token);
However when checking logs on Azure Functions, just seems to carry on execution and complete the function.
Steps to reproduce:
- Create a HTTP Trigger like the one defined above.
- Publish the app to Azure.
- Open the functions logs on Azure in the monitor section.
- Using Postman, send a request to this function and cancel the request (within the timeout period of 30 seconds).
- Won't cancel the request and will still execute.