2011-07-30 4 views
0

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

Private Sub UploadFile(ByVal fileToSave As FileInfo, ByVal path As String) 
    Dim UploadRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://UserName:[email protected]" & 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 

Я попытался использовать пассивный False и двоичный False, а также сделал больше исследований по моей трассировке стека. И нашел this article, но пока нет решения. Любой вход будет оценен, я также posting another question on windows services для другой проблемы. Если вы хотите сделать снимок, другой вопрос не о ftp, а о разрешениях для службы на сервере Windows 2003

+0

В случае, если кто-то еще наткнулся на это ... У меня была такая же проблема, но когда я перешел на UsePassive = True, он разобрал мою проблему. –

ответ

2

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

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

Асо, ваш URI имеет «пароль» написано неправильно: ftp://UserName:[email protected] и вы снабжающий учетные данные в отдельной строке кода.

+0

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

+0

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

Смежные вопросы