• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2944
  • Last Modified:

HTTPWebResponse Error: Unable to read data from the transport connection

I have some code for uploading a file to a HTTPS server.  The code works great for files up to about 150 MB (not sure of the exact cutoff).   But when the files get bigger than that, then I get the following exception:

    "Unable to write data to the transport connection:  An existing connection was forcibly
    closed by the remote host"

    The BaseException is:  "Unable to read data from the transport connection"


Other users (outside our network) can already successfully upload files up to almost 1 GB with no problems...  it just my code that's not working...

I've searched the internet for hours and haven't found the answer.  Please help. Thanks!

VBRocks

'This the core code from a dll class that works with a windows form.
 
        'Get the length of the selected file
        Dim fi As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(filePath)
        Dim fileLength As Long = fi.Length
 
        'Create the request
        Dim request As HttpWebRequest = _
            DirectCast(HttpWebRequest.Create(address), HttpWebRequest)
 
        'Configure request
        request.Credentials = New System.Net.NetworkCredential("UserName", "Password")
 
        request.Method = WebRequestMethods.Http.Put
        request.KeepAlive = True
        request.Timeout = -1
        request.ContentLength = fileLength.ToString()
 
         'This is required for our WebDav server 
         request.SendChunked = True
         request.Headers.Add("Translate: f")
         request.AllowWriteStreamBuffering = True
 
         Dim s As IO.Stream = request.GetRequestStream()
 
        Dim fs As New IO.FileStream(filePath, IO.FileMode.Open, IO.FileAccess.Read)
        Dim byteTransferRate As Integer = 1024     
        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
 
                'Write to stream
                s.Write(bytes, 0, bytesRead)
 
            End If
 
        Loop While bytesRead > 0
 
        s.Close()
        s.Dispose()
        s = Nothing
 
        fs.Close()
        fs.Dispose()
        fs = Nothing
 
 
         'It basically hangs here for over 10 minutes and then produces the error.
         Dim response As HttpWebResponse = DirectCast(request.GetResponse(), _
             HttpWebResponse)

Open in new window

0
VBRocks
Asked:
VBRocks
  • 2
1 Solution
 
VBRocksAuthor Commented:
Oops... The base exception is:

    "An existing connection was forcibly closed by the remote host"

0
 
VBRocksAuthor Commented:
Alas...  I found the answer.  I thought it was hopeless, and had to be abandoned.  But it was not hopeless.  I was able to use the following article to make it work:

     http://support.microsoft.com/kb/908573

If you're having the same or similar problem, find out exactly what type of authentication your server is requiring (ie.:  Basic, Digest, Kerberos, Negotiate, NTLM), and then be patient and work through this Miscroft Support page.  It will help you solve your problem, and you will still be able to use the HttpWebRequest class.

0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now