tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルWebClientのDownloadDataのタイムアウトの時間の設定方法
記事No8529
投稿日: 2009/01/06(Tue) 20:33
投稿者ヘイロー
いつも参考にさせていただいています。

OS:WindowsXp
   VB.net2005
で開発しております。

WebClientのDownloadDataを使用してphpで作成したプログラムを実行していますが
100秒を超える処理を実行しますと、vb.net側でタイムアウトエラーになってしまい
ます。
インターネットで色々探しましたがタイムアウトの時間を設定する方法が分かりません
でした。
タイムアウトの時間を設定する方法を教えていただけないでしょうか?
以下にソースを記載します。
'ソースここから
Dim ret as byte() = Nothing
Dim WebC as System.Net.WebClient = Nothing

Try
WebC = New System.Net.WebClient
ret = WebC.DownloadData("処理するURLを記載") 'ここでタイムアウトエラーが発生
Catch ex as Exception

End Try
'ソースここまで

以上、よろしくお願いします。

[ツリー表示へ]
タイトルRe: WebClientのDownloadDataのタイムアウトの時間の設定方法
記事No8530
投稿日: 2009/01/07(Wed) 07:40
投稿者オショウ
タイムアウトするくらい大きなファイルのダウンロードなんでしょうか?

http://dobon.net/vb/dotnet/internet/downloadfile.html

こちらをご参照下さい。

以上。

[ツリー表示へ]
タイトルRe^2: WebClientのDownloadDataのタイムアウトの時間の設定方法
記事No8531
投稿日: 2009/01/07(Wed) 10:01
投稿者ヘイロー
> タイムアウトするくらい大きなファイルのダウンロードなんでしょうか?
>
> http://dobon.net/vb/dotnet/internet/downloadfile.html
>
> こちらをご参照下さい。
>
> 以上。
オショウ様、返信ありがとうございます。

説明不足で申し訳ありません。
ここでは、ファイルのダウンロードはしていません。
(記載していただいた内容を確認しましたが、My.Computer.Network.DownloadFileで
タイムアウトの時間は設定できましたが
ファイルのダウンロードではありませんのでちょっと違いました。)
ret = WebC.DownloadData("http://xxxx.php?id=xxx&pwd=xxx")
としていまして、?マーク以降のid及びpwdをPHP側でGETで取得しています。
PHP側の処理は、テキストファイルをftp送信をしています。
PHP側で、?マーク以降のid及びpwdをGETで取得しているため、
vb.net側で、DownloadDataを使用しています。
ftp送信に100秒以上要する場合があるかもしれないため、どこかで設定できないか
と思っております。
System.Net.WebClientのDownloadDataに固持するわけではありません。
タイムアウトを設定できで、上記処理ができる方法を教えていただけないでしょうか?

[ツリー表示へ]
タイトルRe: WebClientのDownloadDataのタイムアウトの時間の設定方法
記事No8534
投稿日: 2009/01/07(Wed) 11:41
投稿者花ちゃん
> インターネットで色々探しましたがタイムアウトの時間を設定する方法が分かりません
> でした。

使った事がありませんので未確認ですが、検索したら HttpWebRequest.ReadWriteTimeout
プロパティ で設定・取得できるような事が書いてありますが?

>ftp送信に100秒以上要する場合があるかもしれないため、どこかで設定できないか
既定値は、300,000 ミリ秒 (5 分) のようです。

http://msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.readwritetimeout.aspx

[ツリー表示へ]
タイトルRe^2: WebClientのDownloadDataのタイムアウトの時間の設定方法
記事No8543
投稿日: 2009/01/08(Thu) 16:46
投稿者ヘイロー
> > インターネットで色々探しましたがタイムアウトの時間を設定する方法が分かりません
> > でした。
>
> 使った事がありませんので未確認ですが、検索したら HttpWebRequest.ReadWriteTimeout
> プロパティ で設定・取得できるような事が書いてありますが?
>
> >ftp送信に100秒以上要する場合があるかもしれないため、どこかで設定できないか
> 既定値は、300,000 ミリ秒 (5 分) のようです。
>
> http://msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.readwritetimeout.aspx

花ちゃん様、お返事ありがとうございます。
記載していただいたホームページを参考しまして、
WebClientでは、タイムアウトの設定は無理なようで、
HttpWebRequestを使用し、その中のTimeoutを設定することにより実現できました。
以下に実現しましてソースを記載します。
    Dim Req As System.Net.HttpWebRequest
    Dim Res As System.Net.HttpWebResponse
    Dim Buf As System.IO.Stream

    Req = CType(System.Net.WebRequest.Create("http://www.xxx.co.jp"), _
                       System.Net.HttpWebRequest)
    'タイムアウト時間設定
    Req.Timeout = 600000
    Res = CType(Req.GetResponse(), System.Net.HttpWebResponse)
    Buf = Res.GetResponseStream()

ありがとうございました。

[ツリー表示へ]