ウェブサイトにリクエストを送信するためにループする小さなプログラムを開発しています。Web ページから必要な情報を取得し、データベースに保存します。
約1400件のリクエストです。
開発中のマシンと Windows Azure VM の両方で実行しています。
最初は、両方のマシンでうまく動作します(初日)。しかし、翌日Windows Azure VMで実行した後。このように例外をスローします。
Web 例外: System.Net.WebException: リモート サーバーがエラーを返しました: (507) ストレージが不足しています。System.Net.WebClient.OpenRead(Uri アドレス) で System.Net.WebClient.OpenRead(文字列アドレス) で StockChecker.MainWindow.Worker_DoWork(Object Sender, DoWorkEventArgs e) で
しかし、開発中のマシンでは問題ありません。
何が起こったのか。対象の Web サイトはボットとして検出されていますか? この問題を解決する方法。
これが私のコードです。
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
}
}