Kon*_*ten -1 c# asynchronous asp.net-web-api asp.net-core asp.net-core-2.2
我搭建了一个像这样的 WebAPI 模板。
[HttpGet]
public async Task<ActionResult<IEnumerable<ThingVm>>> GetThings()
{
Task<List<ThingVm>> output = Context.Things
.Select(e => new ThingVm(e))
.ToListAsync();
return await output;
}
Run Code Online (Sandbox Code Playgroud)
我注意到返回的结果不会传达任何状态代码(因为我没有提供 200 或 404 等)。所以我添加了标准的、通常的Ok(...)
调用。
[HttpGet]
public async Task<ActionResult<IEnumerable<ThingVm>>> GetThings()
{
...
return await Ok(output);
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,计算机并没有意识到该操作并像这样解释了错误。
CS1061“OkObjectResult”不包含“GetAwaiter”的定义,并且找不到接受“OkObjectResult”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)
我明白为什么会这样。我不知道如何在保留响应中发出的状态代码的同时解决它。
我在谷歌上搜索了它,但发现了一些非常陈旧的东西,完全不相关的东西和相当不相关的东西。就是这样 - 根本没有太多其他热门歌曲,这也令人惊讶。
如何发出状态代码并应用异步方法?它们不是相互排斥的,是吗?
你为什么不等待结果呢?
[HttpGet]
public async Task<ActionResult<IEnumerable<ThingVm>>> GetThings()
{
var output = await Context.Things
.Select(e => new ThingVm(e))
.ToListAsync();
return Ok(output);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1229 次 |
最近记录: |