当我使用HttpWebRequest并添加以下内容时:
CookieContainer container = new CookieContainer();
request.CookieContainer = container;它将引发操作超时异常
HttpWebResponse response = request.GetResponse() as HttpWebResponse;如果我不添加CookieContainer,程序运行时就没有错误。为什么这个不行?
发布于 2011-11-27 13:02:42
如何创建请求对象??
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();CookieContainer
尝试设置myWebRequest.Timeout =xxx
System.Net.ServicePointManager.DefaultConnectionLimit ServicePoint.ConnectionLimit
有关更多信息,请访问这些链接:
以下是GetResponse()可能挂起的许多原因。其中一些是:
1)您已经达到了客户端上的连接限制(每个http/1.1服务器有2个连接,每个http/1.0服务器有4个连接,或者在ServicePoint上设置了自定义限制),没有连接可以向服务器发送请求。换句话说,您可能有两个请求未完成(例如:一个1.1服务器),这些请求需要超过2分钟才能完成,然后向同一台服务器发出另一个GetResponse()。最后一个getresponse()可能会超时。
2)您还没有关闭早期httpwebresponse的响应流。因此,即使连接是空闲的,请求也不会被发送。
3)服务器发送响应的时间太长。
发布于 2012-03-30 00:55:33
我也有这个问题。当我请求网页时,我将HttpWebRequest放在Page_Load函数中,并将当前页面中的cookie添加到CookieContainer中,但它一直挂在那里直到超时
问题是,当我第一次请求网页asp点网只是锁定会话,以保护会话同时从不同的地方写入。当我试图调用HttpWebRequest请求同一个域相同的会话时,它将被阻塞,直到第一个页面结束它的会话锁,同时,第一个页面正在等待HttpWebRequest结束它的作业--两个请求只是等待对方直到超时。
好消息是我找到了解决这个问题的方法,我只是在第一页中设置了EnableSessionState="ReadOnly“,它使我调用的第一页不锁定会话。希望这能帮上忙。
发布于 2011-11-27 19:43:50
情况1:
这可能有几个原因。在阅读了有关您的问题的文章之后,我编写了以下几行代码,
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://google.com");
req.Method = "GET";
req.Timeout = 282;
CookieContainer cont = new CookieContainer();
req.CookieContainer = cont;
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
Console.Write(reader.ReadToEnd());
}
resp.Close();
req.Abort();
Console.ReadLine();我编写req.Timeout = 282;是因为我测试了几个值,而http://google.com确实需要从我的计算机中抽出282毫秒才能做出响应。从较慢的internet连接,此代码可能返回超时。
请务必把时间定得足够高。
情况2:如果您意识到cookie是启用的,您所连接的服务器可能会花费更长的时间。当您不将任何内容设置为req.CookieContainer时,cookie就会被禁用。所以请确定这一事实。)希望它能起作用。
https://stackoverflow.com/questions/8285500
复制相似问题