Ошибка 550 Когда я пытаюсь получить размер файла на FTP - PullRequest
2 голосов
/ 17 ноября 2009

Я пытаюсь использовать FtpWebRequest, чтобы получить размер файла на корпоративном FTP. Тем не менее, всякий раз, когда я пытаюсь получить ответ, выдается исключение. Смотрите подробности ошибки в блоке catch в приведенном ниже коде.

string uri = "ftp://ftp.domain.com/folder/folder/file.xxx";
FtpWebRequest sizeReq = (FtpWebRequest)WebRequest.Create(uri);
sizeReq.Method = WebRequestMethods.Ftp.GetFileSize;
sizeReq.Credentials = cred;
sizeReq.UsePassive = proj.ServerConfig.UsePassive; //true
sizeReq.UseBinary = proj.ServerConfig.UseBinary; //true
sizeReq.KeepAlive = proj.ServerConfig.KeepAlive; //false

long size;

try
{
//Exception thrown here when I try to get the response
using (FtpWebResponse fileSizeResponse = (FtpWebResponse)sizeReq.GetResponse())
{
size = fileSizeResponse.ContentLength;
}
}
catch(WebException exp)
{
FtpWebResponse resp = (FtpWebResponse)exp.Response;
MessageBox.Show(exp.Message); // "The remote server returned an error: (550) File unavailable (e.g., file not found, no access)."
MessageBox.Show(exp.Status.ToString()); //ProtcolError
MessageBox.Show(resp.StatusCode.ToString()); // ActionNotTakenFileUnavailable
MessageBox.Show(resp.StatusDescription.ToString()); //"550 SIZE: Operation not permitted\r\n"
}

Этот код работает, однако, при подключении к моему личному FTP. В описании состояния указано, что операция «не разрешена». Может ли быть так, что мой офисный FTP просто не позволяет запрашивать размер файла?

Я также попытался перечислить детали каталога, которые будут возвращать размер, и заметил, что мой офисный FTP сообщает подробности каталога в другом формате, чем мой личный FTP. Может в этом проблема?

//work ftp ListDirectoryDetails
-rw-r--r--   1 (?)      user    12345 Nov 16 20:28 some file name.xxx

//personal ftp ListDirectoryDetails
-rw-r--r--    1 user user 12345 Mar 13  some file name.xxx

Из прочтения этого сообщения в блоге Я думаю, что мой личный ftp возвращает ответ в формате Unix, но моя работа возвращает ответ в формате Windows. Может быть, это не связано, но я подумал, что упомяну это.

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

У меня проблемы из-за базового именования файлов: Когда вы подключаетесь к FTP-серверу, вы можете указать Uri как «ftp // ftp.domain.com / somedirectory», но это будет означать: «ftp://ftp.domain.com/homedirectoryforftp/somedirectory». Чтобы иметь возможность определить полный корневой каталог, используйте "ftp://ftp.domain.com//somedirectory", который переводится в // somedirectory на компьютере.

1 голос
/ 03 декабря 2009

Это произошло со мной после того, как логин был обработан, и получил каталог пользователя по умолчанию в качестве текущего каталога. Я указывал полный путь как URI, включая мой каталог пользователя. Я проследил это с помощью WireShark , вы можете найти тот же результат.

0 голосов
/ 17 ноября 2009

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

...