C# 修复了c中有关HttpResponseMessage的Sonarqube错误

C# 修复了c中有关HttpResponseMessage的Sonarqube错误,c#,httpresponsemessage,C#,Httpresponsemessage,我有这样的代码: HttpResponseMessage response = new HttpResponseMessage(); try { string url = ConfigurationManager.AppSettings["url"]; using (HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, url)) { requestMessag

我有这样的代码:

HttpResponseMessage response = new HttpResponseMessage();
try
{
    string url = ConfigurationManager.AppSettings["url"];
    using (HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
    {
        requestMessage.Headers.Add("Accept", "application/json");                                
        response = await SendHttpRequest(requestMessage).ConfigureAwait(false);                                
    }
    if (response != null && response.IsSuccessStatusCode)
    {
        // do other things
    }
    else
    {
        log.Error("Http response failure with Status Code : " + response.StatusCode"); // sonarqube showing a bug here
    }
}
catch (Exception ex2)
{
    // log the exception                        
}


public virtual async Task<HttpResponseMessage> SendHttpRequest(HttpRequestMessage httpRequest)
{
    HttpResponseMessage response = null;
    using (HttpClient client = new HttpClient())
    {
        response = await client.SendAsync(httpRequest).ConfigureAwait(false);
    }
    return response;
}
当我对这段代码运行Sonarqube分析时,它在代码中的注释行抛出了一个bug,表示“response”在至少一个执行路径上为null 我怎样才能让它消失。我已经初始化了HttpResponseMessage,但这仍然是一个错误。
这方面的任何帮助都会有所帮助。

请检查以下代码

 if (response != null && response.IsSuccessStatusCode)
{
    // do other things
}
else
{
    log.Error("Http response failure with Status Code : " + response.StatusCode"); // sonarqube showing a bug here
}
在您的代码中,SonarQube认为response.StatusCode中存在null引用异常的可能性,因为在if条件下,您检查了它是否为notnull。若它为null,那个么它将转到您正在访问null对象属性的其他位置

为了解决SonarQube错误,请在下面更新您的行

log.Error("Http response failure with Status Code : " + response?.StatusCode"); // sonarqube showing a bug here

希望这能起作用

谢谢,这解决了我的问题。你也可以帮我解决这个问题,我张贴:或。非常感谢。