我使用以下方法列出文件夹的内容:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我通过FTP连接到单个Linux服务器.我使用的凭据myusername1和myusername2连接.
如果我使用myusername1凭据,我可以在使用此功能时列出目录内容,但是如果我使用myusername2它,则会出现以下错误:
远程服务器返回错误:(503)错误的命令序列.
我尝试过的事情:
ftprequest.KeepAlive = false.特殊情况是我的代码将myusername1在我的代码中未启用SSL的情况下连接使用.
综上所述:
myusername1myusername2如果没有启用安全FTP ,将无法在FileZilla上连接.myusername1我的C#方法没有ftprequest.EnableSsl启用.myusername2无论是否ftprequest.EnableSsl启用,都无法在我的C#方法中工作.using()陈述引发了异常.我刚刚注意到的其他东西,当我将鼠标悬停在我的上方时ftprequest,它会显示NotSupportedException,但无论我使用哪组凭据,都会显示
如果我ftprequest在使用时将鼠标悬停在我的初始状态myusername2,它会显示在我之前抛出的异常using():

这可能是盲目的尝试,但是您尝试过使用 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());
}
}
Run Code Online (Sandbox Code Playgroud)
凭证缓存还为您提供了一系列身份验证类型选项(“NTLM”、“Digest”、“Kerberos”、“Negotiate”...)。
更多信息--> http://msdn.microsoft.com/en-us/library/59x2s2s6.aspx
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |