У меня проблема с переименованием файла FTP с использованием следующего кода:
Dim Request As FtpWebRequest = DirectCast(WebRequest.Create(New Uri("ftp://sftp.mycompany.com/myfile.txt")), FtpWebRequest)
'Set that we will be renaming a file
Request.Method = WebRequestMethods.Ftp.Rename
'Provide the new filename
Request.RenameTo = NewFileName
'The credentials needed to log onto the server
Request.Credentials = New NetworkCredential("username", "password")
'We are going to enable SSL for the communication with the FTP server as required by the remote server.
Request.EnableSsl = True
Request.UsePassive = True
Request.KeepAlive = False
'Create a Response object getting the downloaded file
Dim Response As FtpWebResponse = DirectCast(Request.GetResponse(), FtpWebResponse)
Response.Close()
У меня никогда не было, чтобы он работал, или мне нужно было переименовать файл FTP до .NET 4.0, так что это был первый код, который я написал,Близкая производная этого кода для загрузки файла РАБОТАЕТ, поэтому он не является проблемой SSL или FTP (читайте дальше для подробного отслеживания) Очевидно, что этот код был задокументирован для работы в Framework 3.5 или более ранней версии.В проекте VS.NET 2010 .NET Framework 4.0 я всегда получаю ответ: «Удаленный сервер возвратил ошибку: (550) файл недоступен (например, файл не найден, нет доступа).»
Угадайте, что ..скопировал точный код в старый тестовый проект VS.NET 2008, запустил его снова -> отлично работал!
Так что я подумал, что просто оберну этот код в двоичный файл, ориентированный на 3.5 Framework, и затем буду ссылаться на него вмой проект VS.NET 2010, чтобы перехитрить ошибку, но она не работала.
Я попытался добавить обходной путь, который я нашел, заявляя, что добавление префикса "% 2E /" к имени файла не работает для меня.Мой журнал трассировки продолжал выводить те же результаты:
Информация о System.Net: 0: [2228] FtpControlStream # 15409429 - Получен ответ [257 "/ users / company" является текущим каталогом]
Информация о System.Net: 0: [2228] FtpControlStream # 15409429 - Команда отправки [RNFR /myfile.txt]
Информация о System.Net: 0: [2228] FtpControlStream # 15409429 - Получен ответ [Файл 550 / myfile.txt not found]
VS.NET 2008 имеет разные результаты, пропуская первую косую черту перед файлом переименования:
Информация о System.Net: 0: [6460] FtpControlStream # 40715158 - Полученоответ [257 "/ users / company" является текущим каталогом]
Информация System.Net: 0: [6460] FtpControlStream # 40715158 - Отправка команды [CWD / users / company /]
Информация System.Net: 0:[6460] FtpControlStream # 40715158 - Полученный ответ [250 Команда CWD выполнена успешно]
Информация System.Net: 0: [6460] FtpControlStream # 40715158 - Отправка команды [RNFR myfile.txt]
SysИнформация tem.Net: 0: [6460] FtpControlStream # 40715158 - Полученный ответ [350 Введите новое имя]
Информация System.Net: 0: [6460] FtpControlStream # 40715158 - Отправка команды [RNTO myfileOLD.txt]
Информация System.Net: 0: [6460] FtpControlStream # 40715158 - Полученный ответ [250 переименован]
Я перепробовал каждую комбинацию и не могу заставить ее работать, кроме как при работе в VS.NET 2008или до.Это похоже на ошибку или недокументированное изменение процедуры, что, вероятно, требует записи на connect.microsoft.com.
Любая помощь или предложения по этому поводу?
Спасибо!