远程服务器(403)使用WebClient时出现禁止错误

我试图使用WebClient查询一些URL。

我有一个集合,我循环访问以获取QueryString值,并构建最终的URL,然后将其传递给客户端。

它第一次执行得很好,我得到了适当的响应,但是,当它第二次进入循环时,我得到错误:

System.Net.WebException – >远程服务器返回错误:(403)Forbidden。

如果我第一次得到回复。 然后我也应该收集其余的collections品。

有什么线索为什么? 我可能会缺少什么?

以下是我正在使用的代码段。

  using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\sample.text")) { foreach(var f in fileCollections) { strFinalURL = string.Empty; strFinalURL = "someURL" + f; // f can be considered as querystring param value try { using(var client = new WebClient()) { test = client.DownloadString(strFinalURL); if (!test.Contains("somecondition")) { file.WriteLine(""); } } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } } } 

如果你说的一切都是正确的,那么我怀疑服务器限制正在发挥作用。 尝试在循环中添加Thread.Sleep以减慢速度。

某些Web服务器可以根据它们提供的用户代理字符串阻止请求。 在您的情况下,您将空字符串作为用户代理发送。 尝试添加浏览器的用户代理,任何浏览器都可以。

例如:

 client.Headers.Add("user-agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); 

有关用户代理的列表,您可以单击此处 。