- ベストアンサー
FTP接続の例外処理について
- vb.net開発時のFTP接続での例外処理についてご教授ください。
- 特に、アップロード中に接続が切断された場合の処理方法について教えてください。
- ご教授いただけるとありがたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>この部分をTry文の外で宣言すればエラーの解決になる すりゃいいじゃん(笑) Private Function UpRoad(ByVal Flnm As String) As Boolean Dim reqStrm As System.IO.Stream Dim fs As System.IO.FileStream Try 'ファイルをアップロードするためのStreamを取得 reqStrm = ftpReq.GetRequestStream() 'アップロードするファイルを開く fs = New System.IO.FileStream( _ upFile, System.IO.FileMode.Open, System.IO.FileAccess.Read) … catch … Finally … End Try End Sub
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
俺自身FTPとかの処理に詳しくないんで,見当違いの事いうかもしれないけど, 質問見て思ったのがTry~Catch~Finally~End Try構文の最後のFinally http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet14/vb6tonet14_03.html
補足
返信ありがとうございます。 Try~EndTryの内容を以下のように修正しました。 Try 'ファイルをアップロードするためのStreamを取得 Dim reqStrm As System.IO.Stream = ftpReq.GetRequestStream() 'アップロードするファイルを開く Dim fs As New System.IO.FileStream( _ upFile, System.IO.FileMode.Open, System.IO.FileAccess.Read) 'アップロードStreamに書き込む Dim buffer(1023) As Byte While True Dim readSize As Integer = fs.Read(buffer, 0, buffer.Length) If readSize = 0 Then Exit While End If reqStrm.Write(buffer, 0, readSize) End While '**削除ここから 'fs.Close() 'reqStrm.Close() '**削除ここまで UpRoad = False Exit For Catch wex As System.Net.WebException Dim Err As String = wex.Status If Err = "2" Then UpRoad = True Exit For Else Int_Err = Int_Err + 1 If Int_Err = 3 Then System.IO.File.WriteAllText("C:\UL.log", wex.ToString) UpRoad = True Exit For Else Exit Try '10秒間(10000ミリ秒)停止する System.Threading.Thread.Sleep(10000) End If End If '**追加ここから Finally fs.Close() reqStrm.Close() '**追加ここまで End Try このように修正した場合 fs,reqStrmが宣言されていませんというエラーが出てしまいます。 Tryの頭部分で宣言した 'ファイルをアップロードするためのStreamを取得 Dim reqStrm As System.IO.Stream = ftpReq.GetRequestStream() 'アップロードするファイルを開く Dim fs As New System.IO.FileStream( _ upFile, System.IO.FileMode.Open, System.IO.FileAccess.Read) が変数の有効範囲を超えてしまったのだと理解しています。 この部分をTry文の外で宣言すればエラーの解決になると思うのですが、 どう修正してよいかわかりません。 非常に基本的な問題で申し訳ないのですが、どなたかご教授ください。
お礼
ホントデス(泣 すればいいだけの問題でした・・・。 忙しい中答えてくださってありがとう。 とても助かりました。