VB.net прервана ошибка webrequest.uploadfile - PullRequest
0 голосов
/ 12 мая 2018

Я использую функцию загрузки файла через веб-запрос. Но у меня ошибка для больших файлов в медленной сети. Поэтому я думаю, что, может быть, буфер или что-то мне поможет

Мой код

Private Shared Function GetFileUploadResponse(ByVal fileToUpload As String, ByVal accessToken As String, ByVal uploadUrl As String) As UploadResponse
        Dim client = New WebClient()
        client.Headers.Add("Authorization", "OAuth " & accessToken)

        Dim responseBytes = client.UploadFile(uploadUrl, fileToUpload)

        Dim responseString = Encoding.UTF8.GetString(responseBytes)

        Dim response = JsonConvert.DeserializeObject(Of UploadResponse)(responseString)

        Return response



    End Function

при попытке загрузить файлы размером более 100 МБ ошибка прервана.

Я нашел этот код, но это для FTP. Я использую обычную веб-загрузку. Я пытаюсь изменить свой код, но выдает ошибку при каждой попытке

Dim request As FtpWebRequest =
    WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip")
request.Credentials = New NetworkCredential("username", "password")
request.Method = WebRequestMethods.Ftp.UploadFile

Using fileStream As Stream = File.OpenRead("C:\local\path\file.zip"),
      ftpStream As Stream = request.GetRequestStream()
    Dim read As Integer
    Do
        Dim buffer() As Byte = New Byte(10240) {}
        read = fileStream.Read(buffer, 0, buffer.Length)
        If read > 0 Then
            ftpStream.Write(buffer, 0, read)
            Console.WriteLine("Uploaded {0} bytes", fileStream.Position)
        End If
    Loop While read > 0
End Using

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

решение найдено. проблема с тайм-аутом веб-клиента. Этот клиент хорошо работает.

Public Class BigWebClient
    Inherits WebClient
    Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
        Dim x As WebRequest = MyBase.GetWebRequest(address)
        x.Timeout = 60 * 60 * 1000
        Return x
    End Function
End Class
0 голосов
/ 12 мая 2018

Вы должны установить максимальный размер загружаемого файла на стороне сервера, по-видимому, у вас установлено значение 100 МБ.

On the server:
Open IIS Manager.
Select the website with your site name.
Double-click on "Request Filtering".
Click "Edit Feature Settings" on the right hand side of the page.
In the dialogue window that opens you can see the "Maximum allowed content length" field. The default is 30mb, apparently yours is set to 100mb Let us say we want our files to be up to 1GB, then we would need to put "1073741824" there.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...