.NET FtpWebRequest 有时会失败

7

我尝试使用FtpWebRequest列出文件详细信息,但经常会因WebException而失败,并显示错误530用户未登录。

为什么有时候使用相同的凭据它能正常工作?

代码摘录:

        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpuri));
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential(userName, password);
        string[] downloadFiles = new string[0];
            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
            WebResponse response = reqFTP.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            downloadFiles = reader.ReadToEnd().Replace("\r\n", "¤").Split('¤');
            reader.Close();
            response.Close();

我曾经遇到过这个确切的问题。当我已经连接到服务器一段时间,然后改变目录并列出文件时,它似乎更容易发生。 - Jonathan
你的问题类似于内置的Windows资源管理器FTP(即:集成到Explorer.exe的Internet Explorer)中的错误,即在导航目录后,它会“丢失”您的凭据并反复要求您登录。不过,我从未听说过使用dotnet时出现这种行为。 - David Anderson
1个回答

2

尝试设置

reqFTP.KeepAlive = false;

如果上述方法不起作用,可能还有其他解决方案。

reqFTP.UsePassive = false;

我发现将这些设置为 false,大大减少了产生此错误(由 FTP 服务器生成)的次数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接