我开发了一个循环发送请求到网站的小程序。 为了从网页获取我需要的一些信息,然后存储到我的数据库。
这是大约1400个请求。
我在开发机器和Windows Azure VM上运行它。
首先,它在两台机器上都能很好地工作(第一天)。 但是在我第二天在Windows Azure VM上运行之后。 它会像这样抛出异常。
Web异常:System.Net.WebException:远程服务器返回了一个 错误:(507)存储空间不足。在 System.Net.WebClient.OpenRead(Uri地址)at System.Net.WebClient.OpenRead(String address)at StockChecker.MainWindow.Worker_DoWork(对象发件人, DoWorkEventArgs e)
但是在开发机器上没问题。
发生了什么事。目标网站是否被检测为机器人? 如何解决这个问题。
这是我的代码。
WebClient client = new WebClient();
List<tbmProduct> prodList = // Get data from my database;
foreach (var prod in prodList)
{
string content;
string link = prod.SupplierUrl;
try
{
using (StreamReader reader = new StreamReader(client.OpenRead(link)))
{
content = reader.ReadToEnd();
// Do something. Update my database.
}
}
catch (WebException ex)
{
// write log
}
catch (Exception ex)
{
// write log
}
}
答案 0 :(得分:0)
我也遇到了这个问题,并搜索了很多文档,但找不到修复方法。似乎此问题是由服务器设置引起的,因此我们无法在代码中修复它。我的解决方案是当507错误发生时,保存当前点,等待几分钟然后继续从断点发送http请求。