引发这个问题的示例代码
private async Task<UserDto> Get()
{
var response = await _client.GetAsync("").ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
return await ReadAsAsync<UserDto>(response.Content);
}
//...
}
private async Task<T> ReadAsAsync<T>(HttpContent content)
{
var responseString = await content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(responseString);
}
异常堆栈信息
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
github上的相关issue:HttpClient throws unexpected TaskCanceledException when HttpClient is reused
请问如何解决?
对HttpClient包装下,如果一旦出错则在再次获取HttpClient对象的时候重新实例化如何?
每次都实例化一个client
也是同样的问题
你的环境应该是linux吧,看这个问题的讨论是在linux下且HttpClientHandler长时间未请求,大概被服务端关闭后,再请求时产生的。我最近在做webApiClient库,一直关注httpclient的一些问题,但这个问题我没有遇到过。
是Windows
碰到类似的问题,请问解决了吗
我们现在用的是 .net core 2.2 ,没出现这个问题
@dudu: 我用3.1,出现同样问题
@菜鸟吊思: 出现这个异常是请求执行超时了