在我的 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 的文件),它可能会挂起。这里有什么问题?
**Edit1:** 如果我 PrintWorkDirectory
改用ListDirectory
它,无论我检查什么目录,它都不会引发异常。图中是服务器上不存在目录的响应对象
这是现有文件夹的响应对象。完全一样。。。