Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 对存在的目录使用ListDirectoryDetails时,FtpWebRequest返回“550文件不可用(例如,找不到文件,无法访问)”_C#_.net_Ftp_Ftpwebrequest - Fatal编程技术网

C# 对存在的目录使用ListDirectoryDetails时,FtpWebRequest返回“550文件不可用(例如,找不到文件,无法访问)”

C# 对存在的目录使用ListDirectoryDetails时,FtpWebRequest返回“550文件不可用(例如,找不到文件,无法访问)”,c#,.net,ftp,ftpwebrequest,C#,.net,Ftp,Ftpwebrequest,我有一个恼人的问题,阻止我在FTP中获取所需的文件。这个文件可能有不同的名称,所以我需要先访问文件夹,并列出其中的文件,然后直接请求该文件 我的问题是,例如,我可以在Filezilla中访问此文件,并完美地发现该文件夹,但当使用FtpWebResponse实例获取该文件夹时,我出现了一个错误 550文件不可用,例如找不到文件,无法访问 代码如下: FtpWebRequest wr = (FtpWebRequest)WebRequest.Create("ftp://ftp.dachser

我有一个恼人的问题,阻止我在FTP中获取所需的文件。这个文件可能有不同的名称,所以我需要先访问文件夹,并列出其中的文件,然后直接请求该文件

我的问题是,例如,我可以在Filezilla中访问此文件,并完美地发现该文件夹,但当使用FtpWebResponse实例获取该文件夹时,我出现了一个错误

550文件不可用,例如找不到文件,无法访问

代码如下:

FtpWebRequest wr = (FtpWebRequest)WebRequest.Create("ftp://ftp.dachser.com/data/edi/kunden/da46168958/out");

wr.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

wr.Credentials = new NetworkCredential("login", "password");

FtpWebResponse response = (FtpWebResponse)wr.GetResponse();

Stream reponseStream = response.GetResponseStream();

StreamReader reader = new StreamReader(reponseStream);

string names = reader.ReadToEnd();
FtpWebResponse response=FtpWebResponsewr.GetResponse

线路是否抛出错误

PS:生产、测试和FileZilla在同一个域上,如果有帮助,使用相同的internet连接

感谢您的关注和反馈

FileZilla日志:

从我的程序记录,红色圆圈的错误与FTP错误无关

当FtpWebRequest解释URL时,它不考虑将主机名和路径分隔为路径的一部分的斜杠。提取的路径然后按原样与FTP CWD命令一起使用。这意味着FTP服务器将解析相对于主目录的路径。如果您的帐户没有chrooted,则客户不会将home视为根,缺少前导斜杠会导致意外行为

在您的例子中,您从/remote/path开始,并使用类似URL的URLftp://example.com/remote/path/,它将尝试更改为remote/path,因此最终将更改为/remote/path/remote/path。那不是你想要的

或者必须使用主文件夹的相对路径。在您的情况下,什么是使用没有任何路径的URL。 或者使用绝对路径,在主机名后需要使用两个斜杠:ftp://example.com//remote/path/. 还要注意,文件夹的URL应以斜杠结尾:

对于其他550个问题,请参阅

< P>当FtpWebRequest解释URL时,它不考虑将主机名和路径分隔为路径的一部分的斜杠。提取的路径然后按原样与FTP CWD命令一起使用。这意味着FTP服务器将解析相对于主目录的路径。如果您的帐户没有chrooted,则客户不会将home视为根,缺少前导斜杠会导致意外行为

在您的例子中,您从/remote/path开始,并使用类似URL的URLftp://example.com/remote/path/,它将尝试更改为remote/path,因此最终将更改为/remote/path/remote/path。那不是你想要的

或者必须使用主文件夹的相对路径。在您的情况下,什么是使用没有任何路径的URL。 或者使用绝对路径,在主机名后需要使用两个斜杠:ftp://example.com//remote/path/. 还要注意,文件夹的URL应以斜杠结尾:

有关其他问题,请参阅