DownloadFileを連続使用するとエラーが?

このQ&Aのポイント
  • ごく一般的な方法でイメージファイルをダウンロードしています。最初の2~3回は正常に動作しますが、その後はエラーが連続してしまいます。3分程度の時間間隔を置くと正常に戻りますが、またエラーが連続する状態に戻ってしまいます。
  • そもそもDownloadFileは連続使用してはならないものなのでしょうか?しかし、そんな注意書きは何処にもありません。何らかのエラー回避法があれば教えてください。
回答を見る
  • ベストアンサー

DownloadFileを連続使用するとエラーが?

ごく一般的な方法でイメージファイルをダウンロードしています WebClient wc1 = new System.Net.WebClient(); try { wc1.DownloadFile(@"http://MySite.web.fc2.com/MyImage.jpg",@"c:\MyImage.jpg"); } catch { MessageBox.Show("DownLoad エラー"); } finally { wc1.Dispose(); } 最初の2~3回は正常に動作します でもその後はエラーが連続してしまいます 3分程度の時間間隔を置くと正常に戻ります しかしまたエラーが連続する状態に戻ってしまいます 上記のサンプレではFC2を使用していますがOCNでも同様です 疑問? (1)そもそもDownloadFileは連続使用してはならないものなのでしょうか? でもそんな注意書きは何処にもありません (2)何らかのエラー回避法があれば教えてください お願い致します、ワンワンわぁわぁ~わぁ~ん~!!!

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

そこだけ出されてもなんとも言えないけど、コネクト数制限に引っ掛かってるかアクセス間隔が短すぎてDoS攻撃検知に捕まったか、要因的には「プログラムは間違っていないがサーバにはじかれてる」可能性が高い。 あと文末鬱陶しい。

sato-may
質問者

お礼

ありがとうございました ワンワンわぁわぁ~わぁ~ん~!!!

関連するQ&A

  • c# なぜ警告が出るのか、教えて下さい

    http://dobon.net/vb/dotnet/internet/downloadfile.html の「同期的にファイルをダウンロードし保存する」の例文、 System.Net.WebClient wc = new System.Net.WebClient(); wc.DownloadFile(jczurl, @"c:\test.xml"); wc.Dispose(); を書くと、 1行目「System.Net.WebClient wc」の「wc」は「';' が必要です。」と怒られ、 2行目「jczurl, @"c:\test.xml"」の@の次の「"」は「無効な文字です。」と怒られてしまいます。 無知ですみませんが、理由を教えて下さい。 宜しくお願い致します。

  • ファイルのダウンドードでエラー

    ファイルのダウンドードでエラー あるサイトを参考にファイルをダウンドードするプログラムを組んだのですが、 「リモート サーバーがエラーを返しました: (401) 許可されていません 」 のエラーが出てしまいます。 調べてはいますが、どう直せばいいのか分からない状況です。 どなたか教えてください。 以下ソース(C#です) ------------------------------------------------------------------ System.Net.WebClient wc = new System.Net.WebClient(); string uri = "http://192.168.0.xx/TestService/Excel/pick.xls"; string file = "pick.xls"; wc.DownloadFile(uri,file); wc.Dispose(); ------------------------------------------------------------------ エラー内容 ------------------------------------------------------------------ リモート サーバーがエラーを返しました: (401) 許可されていません 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません ------------------------------------------------------------------

  • VB2005で「ファイルのダウンロード」のダイアログをVBで操作したい。

    初歩的な質問だとは思いますが、どうか回答お願いします。 VB2005でwebからファイルを自動でダウンロードするアプリ を作ろうとしています。 http://www.hogehoge.com/hogehoge.jpg からのダウンロードの仕方は Dim wc As New System.Net.WebClient() wc.DownloadFile("http://www.hogehoge.com/hogehoge.jpg", "c:\hogehoge.gif") でうまくいくのですが、 http://www.hoge.com/code=xxxx/download のようなURLの場合は上記の方法ではうまくいきませんでした。 そこで webbrowser1.navigate("http://www.hoge.com/code=xxxx/download ") を実行後「ファイルのオダウンロード」のダイアログが 表示されるので、VBからそのダイアログを操作して ファイルを保存しようと思いましたが、やり方が全然思いつきませんでした(T△T) どのようにすればよいかご教授ください。 よろしくお願いしますm(_ _)m

  • ProgressBarについて

    私はVB2008を使ってます。 質問ですが、 Button1でクリック後、以下のイベントについてなんですが、 Dim wc As New System.Net.WebClient() wc.DownloadFile("http://localhost/image.gif", "c:\test.gif") wc.Dispose() または・・・ My.Computer.Network.DownloadFile( _ "http://localhost/image.gif", "C:\image.gif", _ "username", "password", _ True, 60000, True, FileIO.UICancelOption.DoNothing) 等を使ってダウンロードの進行状況をProgressBarで現したいのですが、 可能でしょうか? それと同時にラベル1に(0%)等の進行度も表示させたいと思ってます。 この方法が何処を検索しても出ません・・・。 同じ様な検索でテキストにURLを貼り付けて、Button1を押してProgressを動かし、ダウンロードするというのがありましたが、 この質問は、ソースに直接http://...を上記のソースと同じ様に 記述したい場合、どうすれば良いですか? どなたか教えて頂けませんか?

  • ファイルのダウンロード時のエラーの処理について

    Dim wc As New System.Net.WebClient wc.DownloadFile("http://oshiete1.goo.ne.jp/images_goo/goo.gif", "C:\goo.gif") というコードでファイルをダウンロードする場合に ファイルが存在すれば良いのですが、 指定の場所に指定のファイルがなかった場合や 指定したサーバー自体が見当たらない場合や、 返答がなく異常に時間がかかった場合の処理をしたいです。 on Error goto を使うとエラー番号で[5]が出るのですが、 エラールーチンを設けないとデバッグのメッセージで サーバー関係のエラーのメッセージ(404とか)が表示されるのですが、 そのような具体的なエラー番号やエラーの状態をプログラム内で 得るにはどうしたら出来るでしょうか。 何か良い方法がありましたら、ご教示頂きたく、お願い致します。m(__)m

  • C#で、イントラネット内のPCにアクセスする方法

    毎度お世話になっております。 C#でWebClientを使用して、イントラネット内のサーバーに アクセスしようとするときに、以下のようなことが起こってしまいます。 何とか回避策をお願いいたします。 1.PC起動直後にアプリからWebClientを使用してサーバーを覗こうとして 失敗する(ユーザー名、パスワードともに設定済み)。 2.マイネットワークなどから、エクスプローラーなどでユーザー名と パスワードを入力し、サーバーに一度でも入る。 3.その後は、アプリでWebclientで入ることができる。そのときはユーザ名もパスワードも設定しなくても入れてしまう。 要は、一度でもエクスプローラーなどから入れば、後は入れてしまう のですが、起動直後は入れないままです。 下記に、その部分のソースを記します。 try{ WebClient wc = new WebClient();  //wc.Credentials = new NetworkCredential(UserName, Password);  wc.UploadFile("\\\\filebox/xxxxxx/test.txt", "test.txt"); } catch{ } 上記のように、ユーザー名とパスワードを設定するところをコメントア ウトしても、入ることができます。 これは仕方のないことなのでしょうか。もしくは、良い回避策は あるのでしょうか。宜しくお願いいたします。

  • C#で、リンク先の画像自動保存を実現させたい

    こんにちは 僕はC、C++をある程度勉強しているのですが、タイトルのようにリンク先の画像保存を行うには、C#が一番のようなので、必死に手さぐりでコードを書いています。 実現したい内容は、連番のURL先の画像を自動保存する、というプログラムです。 http://001.jpg http://002.jpg http://003.jpg . . . といったURLを、基本のURL、桁数、開始値、終了値を入力し、自動的にアクセス、保存させたいわけです。 こちらがコードになります。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace aaa { class Program { static void Main(string[] args) { string s; string url = System.Console.ReadLine(); Console.WriteLine("書式"); string frm = Console.ReadLine(); Console.Write("開始値;"); int start = int.Parse(Console.ReadLine()); Console.Write("終了値;"); int end = int.Parse(Console.ReadLine()); for (int i = start; i <= end; i++) { s = i.ToString(); System.Net.WebClient wc = new System.Net.WebClient(); wc.DownloadFile(url.Replace(url, i.ToString(frm)), @"【ここには保存させたいフォルダのパスを入れます】" + s + ".jpg"); wc.Dispose(); Console.WriteLine(url, i.ToString(frm)); } } } } 例のURLを使うなら、入力は http://{0}.jpg 0 1 10(仮) です。 これで動くように作ったつもりなんですが、終了値入力終了後、エラーが出てきてしまいます。 コンパイラ側で 「WebExceptionはハンドルされませんでした」 「ファイル`C:\Users\【僕のユーザー名】\AppData\Local\Temporary Projects\Project\bin\Debug\1'が見つかりませんでした」 というものです。 どうかC#に慣れている方ご教授ください。 当方は、プログラミングの基礎知識はありますが、素人で、かつC#に関する知識はほぼゼロです。 メソッドやクラス等の書式も根本的に勘違いしている可能性もあります。すみません。 出来れば、具体的な改善ソースを掲示して頂くか、分かりやすく噛み砕いた説明の方をお願いしたいです。

  • WebClientの文字列送信にてエラー

    .net のWebClientを使用して文字列をアップロードしているのですが、上手くいかず以下のようなエラーが返されます。 エラー内容:「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=ヘッダー名が無効です。」 [環境] VS2005 VB.NET [ロジック] Using wc As New System.Net.WebClient wc.Encoding = System.Text.Encoding.GetEncoding("shift_jis") wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded") wc.Credentials = New System.Net.NetworkCredential(user,pass) Dim url As New System.Uri("http://指定のURL") Dim returnvalue As String = wc.UploadString(url, "POST", "送信文字列") End Using 補足ですが、通信にはベーシック認証を使用していますが、ユーザー・パスは問題ありません。 UploadStringAsyncを使用すれば文字送信はできています。 通信結果をサーバーより取得するためUploadStringを使用しています。 どなたか解決策をご存知の方はご教授いただきたいと思います。 宜しくお願い致します。

  • .NETによるWAVEファイルの読み込み

    現在、C++でWAVEファイルを読み込みFFTをするツールを.NET Frameworkを使って作っています。 以下が主に作成したプログラムです。 ちなみにtmpFileNameというのが、WAVEファイルのファイル名です。 ----------------------------------------------- FileStream *fs = new FileStream(this->tmpFileName, FileMode::Open, FileAccess::Read); BinaryReader *br = new BinaryReader(fs); try { while(br->PeekChar() >= 0) { Debug::WriteLine(br->ToString()); } } catch(System::Exception *e) { MessageBox::Show(e->ToString()); return; } __finally { __try_cast<IDisposable*>(br)->Dispose(); __try_cast<IDisposable*>(fs)->Dispose(); } ----------------------------------------------- 手始めにバイナリファイルとして読み込み、実際の波形データをコンソールに表示させようとしているのですが、文字化けした結果しか得られませんでした。何が原因でデータが文字化けしているのか分からず、質問した次第です。お分かりになる方いらっしゃいましたら、ぜひご教授下さい。よろしくおねがいします。

  • htmlソースをテキストボックスに表示させて20行目の10文字の数字を取得したい。

    恐れ入ります。 http://www.microsoft.com/japan/msdn/vbasic/migration/tips/WebClient/ このページのコードを使わせてもらって htmlソースをテキストボックスに表示することはできました。表示させたテキストボックスの20行目の10文字の数字を取得したいのですが、どのようにすれば取得できるんでしょうか?val関数も1行目だけみたいですし・・・。ちなみに20行目は var strReqHomeID = "0000100012"; という具合になっていて  0000100012 を取得したいのです。 -------------------以下コード---------------- Imports System Imports System.Text Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim download As New Net.WebClient() Dim temp As Byte() = download.DownloadData(TextBox1.Text) Dim change As Text.Encoding = Encoding.Default TextBox2.Text = change.GetString(temp) Dim filename As String = System.IO.Path.GetFileName(TextBox1.Text) If filename = "" Then filename = "Temp.html" End If Dim strPath = My.Computer.FileSystem.SpecialDirectories.Desktop strPath = strPath + "\" + filename download.DownloadFile(TextBox1.Text, strPath) WebBrowser1.Navigate(TextBox1.Text) Catch ex As Exception Throw End Try End Sub

専門家に質問してみよう