【发布时间】:2020-08-30 23:26:51
【问题描述】:
鉴于aspnet控制器的以下代码sn-p,是否要求在顶层具有async/await,或者返回Task是否有效?
该场景假设存储库的底层代码中有一些使用异步的 IO(数据访问)。
控制器
public class SomeController
{
private readonly ISomeService service;
public SomeController(ISomeService service) => _service = service;
public async Task<SomeResult> GetAsync()
{
return await _someService.GetAsync();
}
}
服务
public class SomeService
{
private readonly ISomeRepo repo;
public SomeController(ISomeRepo repo) => _repo = repo;
public async Task<SomeResult> GetAsync()
{
return await _repo.FirstOrDefault();
}
}
因此在上面,async/await 是必需的吗?没有它编译得很好。 Async Fixer 建议也不需要异步等待。
这是一篇很棒的文章:
但这与其他信息相矛盾。
When should I use Async Controllers in ASP.NET MVC?
https://exceptionnotfound.net/using-async-and-await-in-asp-net-what-do-these-keywords-mean/
async/await in MVC controller's action
但问题是,在上述 aspnet 上下文中,async/await 的正确实现是什么?
请随意列出各种注意事项。
【问题讨论】: