在我的Web应用程序中,我需要设置两个FTP文件夹的路径,并在模型验证中尝试检查这些文件夹是否存在于FTP服务器上。 我的问题是,第一次这通常工作,第二次通常也是如此。但第三次,我有这个错误'远程服务器返回错误:(530)未登录。'经过一些连接后,我有一个'未登录'问题
这里是我的代码:
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(model.configData.FTPInputFolder));
request.Credentials = new NetworkCredential("ftp_free", "ftp_free");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
/*response.Close();*/
}
catch (WebException e)
{
ModelState.AddModelError("configData.FTPInputFolder", "Directory does not exist " + e.Message);
}
// second request for one other directory
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(model.configData.FTPOutputFolder));
request.Credentials = new NetworkCredential("ftp_free", "ftp_free");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
}
catch (WebException e)
{
ModelState.AddModelError("configData.FTPOutputFolder", "Directory does not exist" + e.Message);
}
一段时间后,一切都变得好,但后2-3验证(运行这段代码)中的“没有问题登录”回来。我错过了什么?
此外,如果我取消注释response.Close();
并且如果文件存在于一个文件夹(里面有大约25 MB的文件),它可以挂起。这里有什么问题?
**编辑1:**如果我使用PrintWorkDirectory
而不是ListDirectory
它不会在我检查的目录中引发异常。在画面不是现有目录的服务器上
而且这里的响应对象存在的文件夹的响应对象。它完全一样...
感谢您的帮助。我测试了这个'WebRequestMethods.Ftp.PrintWorkingDirectory',但它不起作用。结果我每次看到成功(我输入正确和不正确的路径)。至于'GetDateTimestamp' - 它总是会抛出一个异常'所请求的URI对于这个FTP命令无效'与任何我试图检查的文件夹 – Vitalii 2013-04-11 20:59:23
但'UsePassive = false'似乎登录问题真的消失:) 50%完成:) :) :) – Vitalii 2013-04-11 21:17:45
您可以将PrintWorkingDirectory的结果与预期的文件夹进行比较。这将涉及我相信的一些字符串比较。 或者继续使用ListDirectory,但对于很多文件,你会看到一个性能命中:) – rivarolle 2013-04-11 21:36:16