小编Γαβ*_*λης的帖子

c# - HttpClient 与 HttpClientHandler 取消不起作用

我正面临 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 属性。我在这里缺少什么?

编辑 …

c# httpclient xamarin.forms

6
推荐指数
1
解决办法
642
查看次数

标签 统计

c# ×1

httpclient ×1

xamarin.forms ×1