【问题标题】:ConfigureAwait warning in .net core 3.1.net core 3.1 中的 ConfigureAwait 警告
【发布时间】:2019-11-11 12:19:28
【问题描述】:

我正在 ASP NET Core 3.1 预览版中开发服务器,现在我看到在调用 await 时,我的所有 async 方法都会收到 CA2007 警告(因为它是在某些任务异步运行时)。

.NET Core 3.1 中异步等待的工作方式是否有任何我不知道的重大变化,因此我应该使用ConfigureAwait

P.S 如果没有变化,有什么方法可以停止用绿色突出显示所有await,而我没有使用configureawait

【问题讨论】:

  • 没有变化,CA2007 只是一个分析器警告,您可以在项目、文件或语句级别禁用。不过,使用ConfigureAwait(false) 在库代码中可能很有用,所以不要急于禁用警告。

标签: asynchronous warnings .net-core-3.0 configureawait .net-core-3.1


【解决方案1】:

您在问题中指定了 ASP.NET Core 3.1,但没有指定您来自哪个版本。但是,在 ASP.NET Core 中(从一开始?)您不需要从 ASP.NET Core 调用 ConfigureAwait(false)。请参阅:ASP.NET Core SynchronizationContext Stephen Cleary。

为了停止警告,我把它放在我的GlobalSuppressions.cs

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("Design", "RCS1090:Call 'ConfigureAwait(false)'.", 
  Justification = "ASP.NET Core doesn't have a SynchronizationContext. https://blog.stephencleary.com/2017/03/aspnetcore-synchronization-context.html", 
  Scope = "NamespaceAndDescendants", 
  Target = "YourProjectNamespace.Controllers")]

注意Target = "YourProjectNamespace.Controllers"。我试图具体说明我在哪里抑制警告。由于我无法控制从哪里调用我的库代码,我想确保我的库仍然调用ConfigureAwait(false)。但是在 ASP.NET Core 控制器中我不需要,因此被压制了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2021-01-24
    • 2021-11-25
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多