0

ウェブサイトにリクエストを送信するためにループする小さなプログラムを開発しています。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
    }
}
4

1 に答える 1

0

私もこの問題に遭遇し、多くのドキュメントを検索しましたが、修正方法が見つかりません。この問題はサーバーの設定が原因であると思われるため、コードで修正することはできません。私の解決策は、507 エラーが発生したときに現在のポイントを保存し、数分待ってからブレークポイントから http リクエストを送信し続けることです。

于 2013-05-09T08:51:17.807 に答える