Jam*_*mes 5 c# azure cancellationtokensource cancellation-token azure-functions
当我取消从浏览器到 HTTP 触发器的请求时,它不会取消,而是在 Azure 上托管时继续执行。
我的函数示例:
[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");
}
Run Code Online (Sandbox Code Playgroud)
我一直在通过 Postman 和 axios 取消令牌测试取消。当我在本地运行项目并取消它时,它可以工作,但一旦发布到天蓝色,它似乎就不会取消。
我的预期结果是,OperationCanceledException
如果我在执行期间取消请求,它会抛出await Task.Delay(30000, allCancellationTokens.Token);
异常。但是,在检查 Azure Functions 上的日志时,似乎只是继续执行并完成该函数。
重现步骤:
小智 1
CancellationToken
当操作系统通知出现问题而终止 Functions 运行时主机时,有助于实现正常关闭 Functions 运行时主机,请参阅以下答案以了解更多信息:https: //stackoverflow.com/a/63439515/528779
归档时间: |
|
查看次数: |
1425 次 |
最近记录: |