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);
您可以在
上获得更多信息
由于某种原因,该进程不能是多线程的。
从任务切换到阻塞单线程,它运行良好...
在每个人都告诉我增加超时值之前,我不想增加它,因为 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);
您可以在
上获得更多信息由于某种原因,该进程不能是多线程的。
从任务切换到阻塞单线程,它运行良好...