在ViewComponent中,我收到以下警告:
(我用过ASP.NET Core 2
)
警告CS1998:此异步方法缺少“等待”运算符,将运行 同步地。考虑使用“ await”运算符等待 非阻塞API调用或“等待Task.Run(...)”以执行CPU绑定的工作 在后台线程上。
我该如何解决?
public class GenericReportViewComponent : ViewComponent
{
public GenericReportViewComponent()
{
}
public async Task<IViewComponentResult> InvokeAsync(GenericReportViewModel model)
{
return View(model);
}
}
更新:
在视野中,我有@await
:
<div class="container">
@await Component.InvokeAsync("GenericReport", new GenericReportViewModel() { })
</div>
答案 0 :(得分:2)
您的动作await
中没有InvokeAsync
方法
您可以安全地删除async
,并将返回值更改为IViewComponentResult
public IViewComponentResult Invoke(GenericReportViewModel model)
{
return View(model);
}
答案 1 :(得分:1)
这不需要是异步的,因为您没有做任何可以从异步操作中受益的操作。删除异步和Task <>。
答案 2 :(得分:1)
您在方法中不使用任何异步调用(没有await
),因此发出警告。 ViewComponent
有2种方法InvokeAsync
和Invoke
。如果实现中没有异步调用,则应使用Invoke
的同步版本(ViewComponent
)
public class GenericReportViewComponent : ViewComponent
{
public IViewComponentResult Invoke(GenericReportViewModel model)
{
return View(model);
}
}
这是有关同步工作的文档部分:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-2.2#perform-synchronous-work