控制台应用程序中出现“无法从传输连接读取数据:连接已关闭”错误

12

我有这段代码在控制台应用程序中,它在一个循环中运行

 try
 {
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(search);
      request.Headers.Add("Accept-Language", "de-DE");
      request.Method = "GET";
      request.Accept = "text/html";
      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
      {
           using (StreamReader reader = new StreamReader(response.GetResponseStream(),
                    Encoding.ASCII))
           {
                string html = reader.ReadToEnd();
                    FindForMatch(html, url);
           }
      }
 }
 catch (Exception ex)
 {
      throw new Exception(ex.Message);
 }

循环几次后出现以下错误:

无法从传输连接中读取数据:连接已关闭

有任何想法为什么会发生这种情况吗?谢谢..


也许是服务器不喜欢您频繁访问造成的。 - leppie
4
顺便说一下,不要重新抛出异常,最好记录异常或让异常向上冒到更高的位置,然后在那里捕获它。 - JohnnBlade
1
异常来自于 `reader.ReadToEnd()'。 - Darshana
3个回答

25

1
嗯,我不知道为什么这个有效,但它确实有效!奇怪!也许是IIS Express或其他什么东西。 - fourpastmidnight
1
非常感谢,这对我很有帮助,我已经苦苦挣扎了一段时间。 - Amit Bhagat

0

我刚刚尝试了这段代码,循环10次加载google.com,对我来说它是有效的。 search 有什么特别之处吗?也许尝试用另一个URI替换它。我没有包括 findForMatch - 我假设它没有做任何会导致异常的事情。


这并不是一直发生的。异常来自于 `reader.ReadToEnd()'。 - Darshana

-5

尝试在try catch的finally块中处理读取器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接