HTTPClient POST Hangs/Timeout 异常

HTTPClient POST Hangs/Timeout Exception

在每个人都告诉我增加超时值之前,我不想增加它,因为 100 秒不够长是没有意义的。所有其他 get 和 post 响应在不抛出 timeout/task 取消异常的情况下花费更少的时间。

我正在尝试模仿以下内容,我涂掉了用户名和密码...

这是代码

    var baseAddress = new Uri("http://www.foodservice.com/home/fs_login.cfm?logmode=Home");
    var cookieContainer = new CookieContainer();
    using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
    using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
    {
        var trypage = await client.GetAsync("http://www.foodservice.com/home/fs_login.cfm?logmode=Home");
        trypage.EnsureSuccessStatusCode();
 Console.WriteLine("something");
        var content = new FormUrlEncodedContent(new[]
       {
             new KeyValuePair<string, string>("user_name", "someuser"),
             new KeyValuePair<string, string>("password", "somepass"),
             new KeyValuePair<string, string>("logmode", "Home")
         });
        var result = await client.PostAsync("http://www.foodservice.com/home/fs_login_check.cfm", content);
 Console.WriteLine("somethingelse");
        result.EnsureSuccessStatusCode();

动手吧。有的打印,有的不打印

var result = await client.PostAsync("http://www.foodservice.com/home/fs_login_check.cfm", content);

我看不出它应该在这里挂起和失败的任何原因...

总结:为什么我的 post 打不通?我是不是用错地址了?

试试这个

await client.GetAsync("http://www.foodservice.com/home/fs_login.cfm?logmode=Home").ConfigureAwait(false);

await client.PostAsync("http://www.foodservice.com/home/fs_login_check.cfm", content).ConfigureAwait(false);

您可以在

上获得更多信息

由于某种原因,该进程不能是多线程的。

从任务切换到阻塞单线程,它运行良好...