在 ViewComponent 中:此异步方法缺少“await”运算符,并且将同步运行

Jah*_*han 3 c# asp.net async-await asp.net-core asp.net-core-2.0

在 ViewComponent 中我收到此警告:(我已经使用过ASP.NET Core 2

警告 CS1998:此异步方法缺少“等待”运算符,并将同步运行。考虑使用“await”运算符等待非阻塞 API 调用,或使用“await Task.Run(...)”在后台线程上执行 CPU 密集型工作。

我该如何解决?

public class GenericReportViewComponent : ViewComponent
{
   public GenericReportViewComponent()
   {
   }
   public async Task<IViewComponentResult> InvokeAsync(GenericReportViewModel model)
   {
       return View(model);
   }
}
Run Code Online (Sandbox Code Playgroud)

更新:

鉴于,我有@await

 <div class="container">
        @await Component.InvokeAsync("GenericReport", new GenericReportViewModel() { })
    </div>
Run Code Online (Sandbox Code Playgroud)

mez*_*tou 5

您没有在该方法中使用任何异步调用(没有await),因此会出现警告。ViewComponent有 2 种方法InvokeAsyncInvoke. 当实现中没有异步调用时,您应该使用同步版本 ( Invoke) :ViewComponent

public class GenericReportViewComponent : ViewComponent
{
   public IViewComponentResult Invoke(GenericReportViewModel model)
   {
       return View(model);
   }
}
Run Code Online (Sandbox Code Playgroud)

以下是有关同步工作的文档部分:https://learn.microsoft.com/en-us/aspnet/core/mvc/views/view-components ?view=aspnetcore-2.2#perform-synchronous-work