【发布时间】:2017-12-27 13:31:27
【问题描述】:
我继承了一些用 web api 编写的代码,我不确定我是否 100% 理解。它看起来像这样:
public async Task<IHttpActionResult> GetAll()
{
var items = await repo.GetItems();
Task.Run(async () =>
{
await MakeCallToExternalServiceAsync();
await MakeCallToAnotherExternalServiceAsync();
});
return Ok(items);
}
在调用存储库以从数据存储中获取一些数据之后,代码会触发一个任务以对一些外部服务进行一些调用。假设这些调用都没有失败,还有其他问题吗?由于请求完成,这些调用会被中止吗?可能存在使用 Autofac 的“请求范围”的资源 - 这些资源会在请求完成后被释放吗?
【问题讨论】:
-
是的,有一个问题:blog.stephencleary.com/2013/11/…
-
Task.Run 会导致比你想象的更多的问题,使用这个有一定的用例吗?
-
是的,用例是像下面提到的斯蒂芬那样“解雇并忘记”。他还没有发现哪些其他问题?
标签: c# asp.net-web-api