C# 获取第二个web服务调用的超时
我有一个非常简单的程序,可以每分钟对URL进行一次web服务调用。但是我在C# 获取第二个web服务调用的超时,c#,C#,我有一个非常简单的程序,可以每分钟对URL进行一次web服务调用。但是我在HttpWebResponse=(HttpWebResponse)请求中保留了超时错误。GetResponse() 我处理得很好,这有什么问题?我怀疑是服务器阻止了连续的呼叫,但我可以在浏览器上反复ping那个url,然后返回结果 while (true) { HttpWebRequest request = (HttpWebRequest)WebReque
HttpWebResponse=(HttpWebResponse)请求中保留了超时错误。GetResponse()
我处理得很好,这有什么问题?我怀疑是服务器阻止了连续的呼叫,但我可以在浏览器上反复ping那个url,然后返回结果
while (true)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
//using (Stream stream = response.GetResponseStream()) {
// using (StreamReader reader = new StreamReader(stream))
// {
// html = reader.ReadToEnd();
// }
//}
}
var inventory = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(html);
System.Threading.Thread.Sleep(60000);
这回答了你的问题吗?向请求添加using或将请求移到while循环之外。您可以从cmd.exe>Netstat-a检查连接状态。处理响应不会关闭请求。我认为问题在于您每次都试图通过while循环发送一个新的请求连接,而不关闭以前的请求。@NitinS我认为这不是超时限制问题。因为我可以在web浏览器上连续发出请求,没有问题。这很重要else@jdweng谢谢你把请求移到外面。但是我现在在
Stream=response.GetResponseStream()
行上也得到了“无法访问已处理的对象”。我理解使用dispose它,但是每个forloop都应该创建一个新的forloop,对吗?当reader是dispose时,它也在处理流。因此,当您退出流的using语句时,您将得到异常。
//updated base on recommendation. Now I get error
`System.InvalidOperationException: 'This operation cannot be performed after the request has been submitted.' on request.GetResponse()
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip;
while (true)
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream());
html = reader.ReadToEnd();
//do stuff with the response
request.Abort();
reader.Close();
System.Threading.Thread.Sleep(600);
}
}