Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ftp.UploadFile / 3 сообщений из 3, страница 1 из 1
22.09.2014, 14:49
    #38753560
maximIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftp.UploadFile
Добрый день. Чуть ниже я представлю код выгрузки на фтп. Проблема в том что на одном из хостингов нас начали блокировать с предполагаемой причиной "слишком много соединений". По крайней мере по всем признакам так оно и есть.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 Private Sub FtpUploadData(Data() As Byte, FileName As String, UserName As String, Password As String, FtpHost As String)

        Dim FtpUri As Uri = BuildUri(FtpHost, FileName)

        If FtpUri Is Nothing Then Return

        Dim Request As FtpWebRequest = FtpWebRequest.Create(FtpUri)
        Dim Stream As System.IO.Stream = Nothing

        Request.Method = Method
        Request.Credentials = New NetworkCredential(UserName, Password)
        Request.KeepAlive = False

        Try
            Stream = Request.GetRequestStream()

            Stream.Write(Data, 0, Data.Length)

            ExportFilesCount += 1
        Catch ex As Net.WebException
            ErrorList.Add(String.Format("{0} {1}", ex.Message, FileName))
        End Try

        Try
            If Stream IsNot Nothing Then Stream.Close()
        Catch ex As Net.WebException
            ErrorList.Add(ex.Message)
        End Try

    End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Public Sub ExportImagesByRoot(ExportFiles As Dictionary(Of Object, String), Connection As SqlConnection, UserName As String, Password As String, FtpHost As String, BW As System.ComponentModel.BackgroundWorker)

        For Each File As KeyValuePair(Of Object, String) In ExportFiles

            Dim Data As Byte() = GetFileData(FileID, Connection)

            If Data IsNot Nothing Then
                FtpUploadData(Data, FileName, UserName, Password, FtpHost)
            End If

        Next

    End Sub



каким образом получается что при такой выгрузке у много соединений с хостингом и нас блочат? Ведь я использую Request.KeepAlive = False который со слов мсдн должен закрывать соединение. Правда там же написано что это происходит при вызове метода Close респонса. Но я ведь респонс не получаю.. он вообще мне не особо нужен. Тогда получается что из-за этого остаются активные все подключения до окончания всей выгрузки? Я не совсем понимаю смысл этой опции
...
Рейтинг: 0 / 0
22.09.2014, 15:17
    #38753599
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftp.UploadFile
maximIZ,

Код: vbnet
1.
2.
3.
Using Stream As System.IO.Stream = Request.GetRequestStream()
...
End Using
...
Рейтинг: 0 / 0
22.09.2014, 15:30
    #38753615
maximIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ftp.UploadFile
так вот же If Stream IsNot Nothing Then Stream.Close()

ровно тоже самое делает
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ftp.UploadFile / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]