Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpResponseMessage'不包含'GetAwaiter'的定义,并且没有可访问的扩展方法'GetAwaiter'_C#_Async Await - Fatal编程技术网

C# HttpResponseMessage'不包含'GetAwaiter'的定义,并且没有可访问的扩展方法'GetAwaiter'

C# HttpResponseMessage'不包含'GetAwaiter'的定义,并且没有可访问的扩展方法'GetAwaiter',c#,async-await,C#,Async Await,我有一个C语言中的xUnit方法来测试web api [Fact] public async Task GetWeatherForecast() { var apiClient = new HttpClient(); var apiResponse = await apiClient.GetAsync($"http://xxx/weatherforecast").Result; Assert.True(apiRespon

我有一个C语言中的xUnit方法来测试web api

    [Fact]
    public async Task GetWeatherForecast()
    {
        var apiClient = new HttpClient();

        var apiResponse = await apiClient.GetAsync($"http://xxx/weatherforecast").Result;

        Assert.True(apiResponse.IsSuccessStatusCode);
    }
但遇到此错误时,HttpResponseMessage“不包含“GetAwaiter”的定义,并且没有可访问的扩展方法“GetAwaiter”。如果我删除了异步任务并等待,它可能会成功运行。

不要调用结果,在使用异步和等待模式的最佳情况下,它可能会导致问题

但是,问题是因为您试图使用与等待关键字相关联的语言功能,该功能需要等待关键字。编译器规定,要等待某些内容,它必须满足某些约束。等待必须实现GetAwaiter方法、INotifyCompletion、IsCompleted和GetResult方法。这就是错误消息所描述的

这是因为您调用了Result方法,该方法返回任务的结果值。在本例中,它是从HttpResponseMessage GetAsync返回的任务结果。然后你试图等待它,就像它是一项任务/等待,而事实并非如此

一般来说,在现代,很少有情况下调用Result或Wait是一个好主意。

请参阅相关内容
 var apiResponse = await apiClient.GetAsync($"http://xxx/weatherforecast");