我正在按照以下方式向WebApi发出请求:
var response = client.PostAsJsonAsync(url, dto).Result;
我在控制器操作中使用HostingEnvironment
,以便可以在后台线程中完成工作,并将IIS的取消令牌传递给我的服务方法,如下所示:
public IHttpActionResult MyAction(SearchDto dto)
{
HostingEnvironment.QueueBackgroundWorkItem(async ct =>
{
//Do background work
var result = await myService.DoWorkAsync(dto, ct);
});
return Ok();
}
现在我希望能够从客户端传递一个取消标记,以便用户可以取消请求,因此我创建了一个 CancellationTokenSource
并对客户端进行了以下更改:
var response = client.PostAsJsonAsync(url, dto, cts.Token).Result;
并改变了行动:
public IHttpActionResult MyAction(SearchDto dto, CancellationToken ct)
{
HostingEnvironment.QueueBackgroundWorkItem(async ct =>
{
//Do background work
var result = await myService.DoWorkAsync(dto, ct);
});
return Ok();
}
我的问题出现在这一行:
HostingEnvironment.QueueBackgroundWorkItem(async ct =>
如果我需要使用传递给操作的 ct
,那么我该如何使用 IIS 需要传递给后台线程的 ct
?