C# 使用GetAsync调用我的API永远不会返回响应,即使API确实返回了响应

C# 使用GetAsync调用我的API永远不会返回响应,即使API确实返回了响应,c#,asp.net-web-api,C#,Asp.net Web Api,我有一个web API,附带一个可以调用它的应用程序。我创建了一个类库来处理api调用(我有一个记录请求的反馈),如下所示: public async Task<HttpResponseMessage> GetAsync(string apiCall, HttpClient client) { Stopwatch timer = new Stopwatch(); timer.Start(); HttpResponseMessa

我有一个web API,附带一个可以调用它的应用程序。我创建了一个类库来处理api调用(我有一个记录请求的反馈),如下所示:

public async Task<HttpResponseMessage> GetAsync(string apiCall, HttpClient 
client)
    {
        Stopwatch timer = new Stopwatch();
        timer.Start();
        HttpResponseMessage response = await client.GetAsync(apiCall);

        timer.Stop();
        ApiResponseLogging.PostTimeTaken(timer.ElapsedMilliseconds, apiCall, client);
        return response;
    }
public HttpResponseMessage Get(string apiCall)
    {
        ApiGet get = new ApiGet();
        return get.GetAsync(apiCall, client).Result;
    }
因此,我在客户端应用程序中进行API调用的语法是:

API api = new API();
var response = api.Get("api call")
我制作了一个简单的APITester应用程序,它只引用这个类库来测试输入(我使用protobuf,所以postman不起作用)。当我尝试在测试应用程序中使用上述两行代码(将“api调用”更改为实际调用)时,它会立即得到响应,但是当我在客户端应用程序中使用完全相同的两行代码时,它永远不会得到响应

更令人困惑的是:

登录API&使用断点显示API确实返回了正确的对象,只是这个特定的应用程序从未接收到它。
即使我关闭了api,因此GetAsync()无法获取,我也不会得到拒绝的连接或空对象,它仍然只发送get()请求,并且在该点之后不会执行任何操作。

get(string apiCall)
也应该是异步的。直接调用
.Result
几乎总是错误的方法。使您的异步操作
async
等待它们。使用
.Result
或任何其他可能获得结果的方法都会导致死锁。最好不要以这种方式混合和匹配sync和async。async一直以来都是如此。感谢各位,我更改了代码,使Get()也是异步的。结果只在响应返回到客户端后使用,而不是作为类库本身的一部分,现在似乎都在工作
Get(string apiCall)
也应该是异步的。直接调用
.Result
几乎总是错误的方法。使您的异步操作
async
等待它们。使用
.Result
或任何其他可能获得结果的方法都会导致死锁。最好不要以这种方式混合使用sync和async.async。感谢各位,我修改了代码,使Get()也是异步的。结果只有在响应返回到客户机后才使用,而不是作为类库本身的一部分,现在似乎都在工作