我使用以下方法列出文件夹的内容:
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
。在我的代码中,我的代码将使用myusername1
连接而不启用SSL,这是很奇怪的。
总结:
myusername1
和myusername2
将无法在FileZilla上连接。myusername1
在我的C#方法中无法启用ftprequest.EnableSsl
。myusername2
是否已启用,ftprequest.EnableSsl
都无法在我的C#方法中使用。using()
声明就触发了异常。 我刚注意到的其他内容,当我将鼠标悬停在ftprequest
上时,会显示NotSupportedException,但无论我使用哪种凭据,都会显示
如果我在使用ftprequest
时将鼠标悬停在我的初始myusername2
上,则会在using()
之前显示异常:
答案 0 :(得分:0)
这可能是在黑暗中拍摄的,但你尝试过使用CredentialCache吗?
System.Net.NetworkCredential nc = new System.Net.NetworkCredential("user", "password");
System.Net.CredentialCache cc = new System.Net.CredentialCache();
cc.Add(new Uri("ftp://m3database"), "Basic", nc);
System.Net.FtpWebRequest ftprequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create("ftp://m3database/recover/");
ftprequest.Credentials = cc;
ftprequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;
using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
}
}
credentialcache还为您提供了一系列authenticationtype选项(“NTLM”,“Digest”,“Kerberos”,“Negotiate”......)。
更多信息 - > http://msdn.microsoft.com/en-us/library/59x2s2s6.aspx
答案 1 :(得分:0)
我通过FTP连接到单个Linux服务器。
CHMOD第二个用户的FTP服务器/文件夹上的权限,它们应该与第一个用户相同。
CHMOD 777将允许访问..