gpt4 book ai didi

c# - Azure Functions 使用带有 Http 触发器的取消 token

转载 作者:行者123 更新时间:2023-12-03 12:43:51 26 4
gpt4 key购买 nike

我正在 Azure 中使用取消 token 开发一个函数。它是一个 Http 触发器。

我在方法参数中传入取消 token 。

其长时间运行的功能。我在进程之间取消了请求,但进程继续运行,并且取消 token 不会产生影响。

Azure Functions 是否支持此功能,如果我在中间取消 Http 请求,它也应该取消其执行,但情况并非如此。

我通过一小段代码对此进行了测试

public static class LongRunningFunction
{
[FunctionName("LongRunningFunction")]
public static async Task<IActionResult> RunAsync(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "Long")]
HttpRequest req, ILogger log, CancellationToken token)
{
try
{
await Task.Delay(10000, token);
return new OkResult();

}
catch (OperationCanceledException)
{
return new NotFoundResult();
}
catch (Exception e)
{
return new InternalServerErrorResult();
}
}
}

我使用 Postman 来执行。

我做错了什么吗?

我正在寻求以下帮助 Link

最佳答案

我知道这是一个老问题,但我找到了这个问题的答案。

在 Azure Functions 中,有 2 个取消 token 。

函数方法参数中传递的 token 是主机取消 token - 当主机即将关闭时请求取消。

另一个标记是 req.HttpContext.RequestAborted 属性。当浏览器取消请求时,它就会被取消 - 这就是您所追求的。

此外,您可以使用以下代码:

using var cancellationSource = CancellationTokenSource.CreateLinkedTokenSource(hostCancellationToken, req.HttpContext.RequestAborted);

获取当主机或请求被取消时取消的 token 。

关于c# - Azure Functions 使用带有 Http 触发器的取消 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60202259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com