![](/img/trans.png)
[英]httpClient.GetAsync throws exception; certificate configuration suspected
[英]HttpClient.GetAsync immediately throws TaskCanceledException
我有一个工作代码从我的CommonRestClient返回一些东西(这是HttpClient的简单包装器):
public async Task<IActionResult> Index()
{
var uri = _baseUri.Concat(AvalancheServiceAdresses.NodeService);
using (var client = new CommonRestClient(uri))
{
var result = await client.GetAsync<List<NodeInfoContract>>(new Uri(NodeServiceConstant.NodesContractUrl, UriKind.Relative), null);
return View(result);
}
}
它运作良好,我很高兴。 直到我决定从另一个类的视图中移动我的代码,这应该包含整个REST逻辑并提供OOP API。
所以现在我的索引看起来像:
public async Task<IActionResult> Index()
{
var nodeInfoContracts = await _configManager.GetNodesList();
return View(nodeInfoContracts);
}
GetNodesList
位置
public ConfiguredTaskAwaitable<List<NodeInfoContract>> GetNodesList()
{
var uri = _baseUri.Concat(AvalancheServiceAdresses.NodeService);
using (var client = new CommonRestClient(uri))
{
return client.GetAsync<List<NodeInfoContract>>(new Uri(NodeServiceConstant.NodesContractUrl, UriKind.Relative), null);
}
}
很明显,提供的代码是相同的。
但是现在它总是会在我尝试获得结果时抛出异常。 在我的GetAsync
方法中,它在使用TaskCanceledException
后续行上失败:
var response = await _client.GetAsync(url).ConfigureAwait(false);
但这是一个很小的问题:当我在这条线上放置一个断点并且它的工作正常时。 所以这里我们有种族条件或类似情况。
我为什么要这样做? 我试图将CondigureAwait置为false / true,结合一些代码,但是当断点关闭时它总是会抛出错误。 我检查了几分钟的超时,它不能导致这个错误。
在第二个代码片段中,客户端在IO完成之前处理。 使用第一个表格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.