ASP.net: проблема с FTP, попытка переместить файлы ASPX с одного FTP на другой - PullRequest
0 голосов
/ 16 ноября 2010

Вот код:

response.Close()
ftpWebRequest = WebRequest.Create(ftp_location & dr("FILE_LOCATION").ToString.Replace("~", ""))
ftpWebRequest.Credentials = New NetworkCredential(ftp_user, ftp_pw)
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile
ftpWebRequest.UseBinary = True


                            ftpSourceRequest = WebRequest.Create(ftp_source & dr("FILE_LOCATION").ToString.Replace("~", ""))
                            ftpSourceRequest.Credentials = New NetworkCredential(ftp_user, ftp_pw)
                            ftpSourceRequest.Method = WebRequestMethods.Ftp.DownloadFile
                            ftpSourceRequest.UseBinary = True
                            Try
                                ftpSourceResponse = ftpSourceRequest.GetResponse()
                                Dim t As System.Net.FtpStatusCode = ftpSourceResponse.StatusCode

                                Dim responseStream As IO.Stream = ftpSourceResponse.GetResponseStream
                                ftpStreamWriter = New StreamWriter(ftpWebRequest.GetRequestStream())
                                ftpStreamWriter.Write(New StreamReader(responseStream).ReadToEnd)
                                dr("STATUS") = "OK"
                                dr.AcceptChanges()
                                ftpStreamWriter.Close()
                                response.Close()
                                ftpSourceResponse.Close()
                            Catch ex4 As Exception
                                response.Close()
                                ftpSourceResponse.Close()
                            End Try

Проблема в том, что когда я действительно скачиваю файл из моего источника, то загружаю его в место назначения.Единственное, что есть в файле - это фрагмент текста с надписью «System.IO.Streamreader». Что я здесь не так делаю?

1 Ответ

0 голосов
/ 16 ноября 2010

Я не видел ничего, что выделялось бы как неправильное.

«System.IO.Streamreader», который вы получаете, будет ожидаемым результатом, если эта строка:

ftpStreamWriter.Write(New StreamReader(responseStream).ReadToEnd)

было на самом деле так:

ftpStreamWriter.Write(New StreamReader(responseStream))

Можете ли вы дважды проверить, что .ReadToEnd был там в версии, которую вы тестируете, и что если все скомпилировано нормально?

Предполагая, что это не проблема, что произойдет, если вы сделаете:

dim sToWrite as String = New StreamReader(responseStream).ReadToEnd
debug.write(sToWrite)
ftpStreamWriter.Write(sToWrite)

Проверка этой строки как минимум скажет вам, правильно ли вы читаете данные.

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

...