Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 空FTP目录中的两个条目_C#_.net_Ftp_Ftpwebrequest - Fatal编程技术网

C# 空FTP目录中的两个条目

C# 空FTP目录中的两个条目,c#,.net,ftp,ftpwebrequest,C#,.net,Ftp,Ftpwebrequest,我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它连接到FTP区域很好,我可以上传/下载文件 这是我从文件夹中获取文件的代码 lstFiles = new List<string>(); string remoteFTPPath = ftpLocation; var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath); request.Method

我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它连接到FTP区域很好,我可以上传/下载文件

这是我从文件夹中获取文件的代码

lstFiles = new List<string>();

string remoteFTPPath = ftpLocation;
var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath);

request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
request.Proxy = null;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

List<string> directories = new List<string>();

string line = reader.ReadLine();

while (!string.IsNullOrEmpty(line))
{
   directories.Add(line);
   line = reader.ReadLine();
}
reader.Close();
lstFiles=新列表();
字符串remoteFTPPath=ftpLocation;
var request=(FtpWebRequest)WebRequest.Create(remoteFTPPath);
request.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials=新的网络凭据(ftpUsername、ftpPassword);
Proxy=null;
FtpWebResponse response=(FtpWebResponse)request.GetResponse();
Stream responseStream=response.GetResponseStream();
StreamReader=新的StreamReader(responseStream);
列表目录=新列表();
字符串行=reader.ReadLine();
而(!string.IsNullOrEmpty(line))
{
目录。添加(行);
line=reader.ReadLine();
}
reader.Close();
我遇到的问题是,当前我试图搜索的文件夹是空的,但它找到了2个文件

为什么会这样

remoteFTPPath
中的值为
ftp://ftp.myArea.co.uk/myServer.co.uk/System-Files/

这是我在FileZilla中打开它时的文件夹-它肯定是一个空文件夹

如何查看系统文件中的所有文件并将其放入列表中

FileZilla日志:

状态:已登录
状态:正在检索“/myArea.co.uk”的目录列表…
状态:“/myArea.co.uk”目录列表成功
状态:正在检索“/myArea.co.uk/System文件的目录列表”…
状态:“/myArea.co.uk/System Files”目录列表成功

在C#应用程序上测试相同的代码时,
Network.log
文件输出如下

系统.Net信息:0:[6132]FtpWebRequest#60068066::.ctor()
系统.Net信息:0:[6132]当前操作系统安装类型为“客户端”。
系统.Net信息:0:[6132]FtpWebRequest#60068066::GetResponse(方法=列表)。
系统.Net信息:0:[6132]FtpControlStream#34640832-已创建从xxx.xxx.x.xx:YYYY到xxx.xxx.x:YY的连接。
系统.Net信息:0:[6132]将FTPWebreRequest#60068066与FtpControlStream#34640832关联
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[220矩阵FTP服务器就绪。
220这是一个专用系统-无匿名登录
此服务器上也欢迎220-IPv6连接。
220请注意:您网站的文件必须存储在htdocs目录下。]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[用户myUser]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[331用户myUser确定。需要密码]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PASS*********]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[230正常。当前目录为/]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[OPTS utf8 on]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[500未知命令]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PWD]
System.Net信息:0:[6132]FtpControlStream#34640832-收到的响应[257”/“是您的当前位置]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[CWD/myArea.co.uk/System Files]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[250确定。当前目录为/myArea.co.uk/System Files]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[类型I]
System.Net信息:0:[6132]FtpControlStream#34640832-收到的响应[200类型现在是8位二进制]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PASV]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[227进入被动模式(213171193,5117157)]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[列表]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[150接受的数据连接]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[226-ASCII
226选项:-a-l
总共226个匹配项]
系统.Net信息:0:[6132]FtpWebRequest#60068066::(正在释放FTP连接#34640832。)
系统.Net信息:0:[14644]服务点#33675143-关闭为空闲


许多FTP服务器在目录列表中返回
项,类似于*nix
ls-a
或Windows
dir
命令。这些分别是对目录本身和父目录的引用

对于任何目录,甚至是空目录(有时[例如,在Windows服务器上],根文件夹除外),您都会得到这些文件


如果您不想要这些,您需要在代码中过滤掉它们。FileZilla的功能也很明确。

在FileZilla中,如果您选中“服务器->强制显示隐藏文件”选项,您还会看到其他内容吗?@steve16351不,没有。我想它们可能是系统/操作系统文件或无法查看的东西。我相信您会发现。(当前目录)和。。(家长名录)是的,谢谢,我在进一步调查后发现了这个。我已经对代码进行了调整,现在它可以找到我需要的文件,并根据需要将它们放入列表中。谢谢你的帮助。