我正面临 HttpClient(.NETStandard v2.1,System.Net.Http,针对单声道运行时)的问题。我想通过在 SendAsync 中传递取消令牌来为每个请求设置 HttpClient 超时。它在使用 HttpClient 的无参数构造函数时正常工作,但在将 HttpClientHandler 的实例传递给 HttpClient 协构造函数时会被忽略。75 秒后取消操作。
为了显示:
public static async Task<HttpResponseMessage> Send()
{
var req = new HttpRequestMessage(HttpMethod.Get, new
Uri("someURL"));
var handler= new HttpClientHandler{CookieContainer = new
CookieContainer()};
/*var client = new HttpClient(); <--- This is working */
var client = new HttpClient(handler);
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
cts.Token.Register(() => Debug.WriteLine("TASK CANCELLED"));
return await client.SendAsync(req, cts.Token);
}
Run Code Online (Sandbox Code Playgroud)
5 秒后,调试输出写入“TASK CANCELLED”,但 SendAsync 总共持续了 75 秒。如果我使用无参数构造函数,SendAsync 会在 5 秒后取消。
我需要 HttpClientHandler 来使用 CookieContainer 属性。我在这里缺少什么?
编辑 …