繁体   English   中英

HttpClient.PostAsync() 方法在 C# xUnt 测试中永远挂起

[英]HttpClient.PostAsync() method is hanging forever in C# xUnt test

我有 600 个功能性 xUnit 测试,每个测试都在测试中间调用httpClient.GetAsync(apiUrl)httpClient.PostAsync(apiUrl, data)方法,这将调用一些外部 API。

当我按顺序执行每个测试时,一切正常。 此外,即使我并行运行 5 - 6 个测试用例,也一切正常。

我的问题是,当我从顶部启动所有 600 个测试用例时(将并行启动 600 个测试用例中的 50 个左右),所有测试都挂在它发送httpClient.PostAsync(apiUrl, data)方法的地方。

同样的问题发生在它执行httpClient.GetAsync(apiUrl)方法的地方。 但是在我将它更改为httpClient.GetAsync(apiUrl).ConfigureAwait(false)后,它解决了这个问题。

但是当我将httpClient.PostAsync(apiUrl, data)更改为 httpClient.PostAsync(apiUrl, data) httpClient.PostAsync(apiUrl, data).ConfigureAwait(false)问题仍然相同。

有人可以解释为什么会发生这种情况以及我应该怎么做才能解决这个问题。

当我如下更改httpClient.PostAsync(apiUrl, data)方法时,它可以解决问题。 我不确定这两种方法有什么区别。

以前的方式

var response = await httpClient.PostAsync(apiUrl, data);

我在上面进行了如下修改,它解决了这个问题。

var task = httpClient.PostAsync(apiUrl, data);
var response = task.GetAwaiter().GetResult();

我还发现了一些类似的问题,已在下面的帖子中讨论过。 如果有人遇到类似问题,请关注下面的帖子,因为它包含一些更有用的提示和原因。 HttpClient.GetAsync(...) 在使用 await/async 时永远不会返回

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM