我正在使用以下方法列出文件夹的内容:
private void TestFtp()
{
try
{
// List all of the files from FTP
FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://m3database/recover/"));
ftprequest.Credentials = new NetworkCredential("myusername1", "********");
ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftprequest.UsePassive = false;
ftprequest.Proxy = null;
using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
我正在通过 FTP 连接到单个 Linux 服务器。我正在使用凭据进行myusername1
连接myusername2
。
如果我使用myusername1
凭据,我可以在使用此功能时列出目录内容,但是如果我使用myusername2
它会出现以下错误:
远程服务器返回错误:(503) 错误的命令序列。
我尝试过的事情:
- 我试过设置
ftprequest.KeepAlive = false
。 - 我尝试使用 UsePassive、Proxy 等的所有排列。
- 我可以使用启用了安全 FTP 的 FileZilla 连接到两个用户名,并且它们都可以工作。如果不启用 FTP,则两者都不会连接。
奇怪的是,我的代码将myusername1
在我的代码中未启用 SSL 的情况下进行连接。
总之:
myusername1
并且myusername2
不会在未启用安全 FTP 的情况下连接到 FileZilla。myusername1
ftprequest.EnableSsl
在没有启用的情况下在我的 C# 方法中工作。myusername2
无论是否ftprequest.EnableSsl
启用,都无法在我的 C# 方法中工作。using()
在我的声明行触发了异常。
我刚刚注意到的其他事情,当我将鼠标悬停在我的 上时ftprequest
,它会显示 NotSupportedException,但是无论我使用哪一组凭据,都会出现这种情况
ftprequest
如果我在使用时将鼠标悬停在我的初始位置上myusername2
,它会显示在我之前抛出的异常using()
: