如何解决当使用ListDirectoryDetails作为目录时,FtpWebRequest返回“ 550文件不可用例如,文件未找到,无法访问”
我遇到一个烦人的问题,无法在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响应=(FtpWebResponse)wr.GetResponse();
是抛出错误的行
PS:生产,测试和FileZilla位于同一域,使用相同的Internet连接(如果有帮助)
感谢您的关注和反馈
FileZilla日志:
解决方法
FtpWebRequest
解释URL时,它不会将将主机名和路径分隔的斜杠视为路径的一部分。然后将提取的路径按原样与FTP CWD
命令一起使用。这意味着FTP服务器将解析相对于您的主目录的路径。如果您的帐户没有被chroot(客户不将房屋视为根),则缺少前导斜线会导致意外行为。
在您的情况下,您从/remote/path
开始,并使用ftp://example.com/remote/path/
之类的URL,它将尝试更改为remote/path
,因此最终更改为/remote/path/remote/path
。那不是你想要的。
- 您必须使用相对路径到主文件夹。在您的情况下,意味着使用没有任何路径的URL。
- 或者使用绝对路径,您需要在主机名之后使用两个斜杠:
ftp://example.com//remote/path/
。
还要注意,指向文件夹的URL应该以斜杠结尾:Why does FtpWebRequest return an empty stream for this existing directory?
有关其他550个问题,请参见FtpWebRequest returns error 550 File unavailable
,q)`sym`qty`price xcols lj/[a;reverse 1!'t]
sym qty price length
--------------------
a 1 1.1 100
b 2 2.2 200
c 3 3.3 300
这适用于我们的 Linux 和 Windows In 2021
机器从 ftp 服务器读取(在 Windows 和 Linux 上)
注意
- Windows ftp 上的主文件夹是 web
- Linux ftp 上的主文件夹是 public_html
TL;DR;
- 底线:URL 需要以 / 结尾
它有效:
live
它不起作用:
ftp://ftp.yourdomain.com.br/public_html/
ftp://ftp.yourdomain.com.br//public_html/
ftp://ftp.yourdomain.com.br/web/
ftp://ftp.yourdomain.com.br//web/
用法: //验证目录public_html是否存在
ftp://ftp.yourdomain.com.br/public_html
ftp://ftp.yourdomain.com.br//public_html
ftp://ftp.yourdomain.com.br/web
ftp://ftp.yourdomain.com.br//web
var url = "/public_html/";
var result = FtpUtil.DoesDirectoryExists(url,"ftp://ftp.yourdomain.com.br","ftp user here","ftp password here");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。