Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取第二个web服务调用的超时_C# - Fatal编程技术网

C# 获取第二个web服务调用的超时

C# 获取第二个web服务调用的超时,c#,C#,我有一个非常简单的程序,可以每分钟对URL进行一次web服务调用。但是我在HttpWebResponse=(HttpWebResponse)请求中保留了超时错误。GetResponse() 我处理得很好,这有什么问题?我怀疑是服务器阻止了连续的呼叫,但我可以在浏览器上反复ping那个url,然后返回结果 while (true) { HttpWebRequest request = (HttpWebRequest)WebReque

我有一个非常简单的程序,可以每分钟对URL进行一次web服务调用。但是我在
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);
            }

        }