C # FTP.ListDirectoryDetails - разные ответы на разных машинах - PullRequest
0 голосов
/ 04 ноября 2011


Ниже я скопировал часть своего кода, куда я подключаюсь к ftp, и проверил его содержимое по указанному пути.
Дело в том, что пока мое приложение работало без серьезных проблем. Но сегодня меня попросили установить его на другой компьютер, а потом выяснилось, что его методы ftp не работают.

До сегодняшнего дня приложение работало на 4-5 компьютерах (win xp / win7), и Ftp.ListDirectoryDetails возвращал значения HTMLlike:
<DIR> ..<BR>09/28/11 10:43 [GMT] <DIR> <A HREF="/to/./">.</A>
(к сожалению, stackoverflow не игнорирует теги html внутри блока кода. ..)

А на следующей машине мои ответы такие: drwxrwxrwx 1 user group 0 Oct 19 11:34 hr

Кто-нибудь имеет представление, почему это происходит? Как решить эту проблему?

Ниже приведена часть моего кода, которая делает вещи

            FtpWebRequest request = FtpWebRequest.Create(path) as FtpWebRequest;
            LogAnything("ConnectTo(" + sPath + ")");
            request.Credentials = new NetworkCredential(login, pswd);
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;             

            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
            FtpWebResponse response = request.GetResponse() as FtpWebResponse;
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);

            string sPattern = @">(.*)<.A>";
            string sSource;
            ArrayList ContentList = new ArrayList();

            while ((sSource = reader.ReadLine()) != null)
            {
                LogAnything("Spam: " + sSource); 
            }

С уважением,
Петр

Ответы [ 2 ]

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

Спецификация FTP не определяет унифицированный формат для списка файлов. Первый формат, который вы видите - формат Windows, второй - формат Unix. Единственный способ получить единый список - использовать команды MLST и MLSD, но вам потребуется какой-то сторонний компонент для правильной работы с списками и расширенными командами.

0 голосов
/ 04 ноября 2011

FTP - самый нестабильный протокол, который я когда-либо встречал.Многое может случиться.Поток может быть обрезан без причины.Соединение может быть закрыто без объяснения причин.Некоторые ответы могут изменить формат, когда они хотят.И т.д. Весь код FTP должен быть очень осторожным, потому что FTP в очень агрессивном мире для приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...