C#FTP.ListDirectoryDetails-不同机器上的不同响应

本文关键字:响应 机器 C#FTP ListDirectoryDetails- | 更新日期: 2023-09-27 18:13:37


下面我复制了我连接到ftp的部分代码,并在给定的路径上检查它的内容
问题是,到目前为止,我的应用程序运行时没有出现重大问题。但今天我被要求在另一台电脑上安装它,然后它发现它的ftp方法不起作用。

到目前为止,应用程序在4-5台机器上运行(winxp/win7(,Ftp.ListDirectoryDetails返回值HTMLlike:
<DIR> ..
09/28/11 10:43 [GMT] <DIR> .

(不幸的是,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); 
            }

致以最良好的问候,
Piotr

C#FTP.ListDirectoryDetails-不同机器上的不同响应

FTP规范没有定义文件列表的统一格式。您看到的第一种格式是Windows格式,第二种是Unix格式。获得统一列表的唯一方法是使用MLST和MLSD命令,但您需要一些第三方组件来正确处理列表和扩展命令。

FTP是我遇到过的最不稳定的协议。很多事情都可能发生。流可以被无故截断。连接可以关闭,无需解释。某些响应可以根据需要更改格式。等等。所有的FTP代码都必须非常小心,因为FTP在一个非常激进的应用程序世界中。