|
分類:[VB.NET/VB2005 以降]
vb.netでWebDAVサーバーにファイルをアップロードするプログラムを開発しています。
大容量ファイル(800MBほど)をアップロードしようとしたのですが、「基礎になる接続が閉じられました: 送信時に、予期しないエラーが発生しました。」というエラーが発生してアップロードに失敗しました。
開発環境
Windows7、Visual studio 2010
ソースコードは以下のとおりです
−−−−−−−−−−−−−−−−
Dim UploadFile As String = ""
Dim fileLength As Long = 0
Dim url As String = WebDAVサーバーのURL
Dim userName As String = 接続ユーザ名
Dim password As String = パスワード
UploadFile = クライアント側のファイルパス
fileLength = My.Computer.FileSystem.GetFileInfo(UploadFile).Length
Dim u As New Uri(url)
Dim host As String = u.Host
url = url.TrimEnd("/"c) & "/" & pSvPath & IO.Path.GetFileName(UploadFile)
Dim request As HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(url), HttpWebRequest)
request.Credentials = New NetworkCredential(userName, password)
request.Method = WebRequestMethods.Http.Put
request.ContentLength = fileLength
request.SendChunked = True
request.Headers.Add("Translate: f")
request.AllowWriteStreamBuffering = True
request.Timeout = 2000000
Dim s As IO.Stream = request.GetRequestStream()
Dim fs As New IO.FileStream(UploadFile, IO.FileMode.Open, _
IO.FileAccess.Read)
Dim byteTransferRate As Integer = 4096
Dim bytes(byteTransferRate - 1) As Byte
Dim bytesRead As Integer = 0
Dim totalBytesRead As Long = 0 Do
bytesRead = fs.Read(bytes, 0, bytes.Length)
If bytesRead > 0 Then
totalBytesRead += bytesRead
s.Write(bytes, 0, bytesRead)
End If
Loop While bytesRead > 0
s.Close()
s.Dispose()
s = Nothing
fs.Close()
fs.Dispose()
fs = Nothing
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim code As HttpStatusCode = response.StatusCode
response.Close()
response = Nothing
−−−−−−−−−−−−−−−−
デバッグで調べると
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
の部分でエラーが発生しています。
ちなみに50MBや130MBの比較的小さめのファイルでは正常にアップロードができました。
アップロードするファイルのサイズには制限があるのでしょうか。
もし、あるのならサイズ制限を拡張する方法はないでしょうか。
よろしくお願いします。
|