【问题标题】:Soanrqube shows blocker for await -.net coreSonarqube 显示等待 -.net 核心的阻止程序
【发布时间】:2021-07-29 01:04:07
【问题描述】:

得到一个声纳问题实际上它被记录为一个阻塞器,说用等待替换结果。

var registerData = new
{
    arg1 = "1", 
    DeviceId = "2"
};

var content = new StringContent(JsonConvert.SerializeObject(registerData), Encoding.UTF8, "application/json");

HttpResponseMessage response = await client.PostAsync("myapicall", content);

if (!response.IsSuccessStatusCode || response.Content == null)
{
    return null;
}

**MyClass myClass = JsonConvert.DeserializeObject<myClass>(response.Content.ReadAsStringAsync().Result);**
return myClass;

我收到的错误消息是“用 'await' 替换对 'Task.Result' 的使用。参见规则”。错误在突出显示的行中 有人可以帮我解决这个问题吗

【问题讨论】:

标签: c# asp.net-core sonarqube asp.net-core-webapi


【解决方案1】:

我认为错误很明显。您正在调用ReadAsStringAsync(),但不是等待生成的任务,而是尝试读取结果,这将阻塞当前线程,直到读取完成。

SonarQube 要求您做的是等待任务,而不是这是处理异步工作负载的正确方法。

MyClass myClass = JsonConvert.DeserializeObject<myClass>(await response.Content.ReadAsStringAsync());
return myClass;

或者说清楚一点

var json = await response.Content.ReadAsStringAsync();
MyClass myClass = JsonConvert.DeserializeObject<myClass>(json);
return myClass;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 2018-12-02
    • 2016-11-10
    • 2020-09-11
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多