FtpWebRequest.GetRequestStream зависает и не работает. - PullRequest
0 голосов
/ 30 июля 2011

Я написал веб-сервис, в двух словах: он использует openpop для получения сообщений электронной почты, работает с содержимым для вставки в базы данных и сохраняет вложения, которые являются изображениями. Это прекрасно работает, когда я сохраняю изображения локально, это точно, что и должно быть. Теперь добавлено требование сохранять изображения в каталог FTP, чтобы я мог динамически создавать свои папки (они создаются на основе метки времени), и это хорошо работает. Моя проблема возникает, когда я пытаюсь сохранить их на FTP. Да, мои имя пользователя и пароль верны, иначе я бы не стал создавать каталог.

Private Sub UploadFile(ByVal fileToSave As FileInfo, ByVal path As String)
    Dim UploadRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://UserName:Passowrd@999.99.999.9" & path), FtpWebRequest)
    UploadRequest.Credentials = New NetworkCredential("PicService", "grean.matching18")
    UploadRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
    UploadRequest.UseBinary = True
    UploadRequest.UsePassive = True

    ' Const BufferSize As Integer = 2048
    ' Dim content(BufferSize - 1) As Byte, dataRead As Integer
    Dim bFile() As Byte = System.IO.File.ReadAllBytes(fileToSave.ToString)
    'UploadRequest.ContentLength = content.Length

    Using FileStream1 As FileStream = fileToSave.OpenRead()
        Try
            'open request to send
            Using RequestStream As Stream = UploadRequest.GetRequestStream

            End Using
        Catch ex As Exception
        Finally
            'ensure file closed
            FileStream1.Close()
        End Try
    End Using
End Sub

Я также пытался использовать Passive False и Binary False, я провел больше исследований по трассировке стека. И нашел эту статью , но решения пока нет. Любой вклад будет оценен, я также опубликовать еще один вопрос на Windows Services для другой проблемы. Если вы хотите попробовать, другой вопрос не о ftp, а о разрешениях для службы на Windows Server 2003

1 Ответ

2 голосов
/ 10 ноября 2011

Возможно, это не решение, но я обнаружил, что строка URI должна быть «правильной», а то, что «правильной», зависит от ftp-сервера.

Так что ftp://server/directory/file работает на некоторых серверах, но должно быть ftp://server//directory/file для работы на других (обратите внимание на двойную косую черту после имени сервера)

Кроме того, в вашем URI неверно указан пароль: ftp://UserName:Passowrd@999.99.999.9, и вы также вводите учетные данные в отдельной строке кода.

...