我想使用Timer(内部15秒)获取Ftp文件
但我的程序无法正常运行,然后返回错误
“远程服务器返回错误:(450)文件不可用(例如,文件繁忙)”
这是我的代码。
private void timer1_Tick(object sender, EventArgs e)
{//interval 15000
GetFtpFile();
}
private void GetFtpFile()
{
label1.Text = "File Name : ";
label2.Text = "Process result : ";
string date = DateTime.Now.ToString("yyMMdd");
FtpUrl += date;
try
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(FtpUrl);
ftpRequest.Credentials = new NetworkCredential("root", "pass");
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string lastModified = response.LastModified.ToString();
List<string> FileName = new List<string>();
while (!streamReader.EndOfStream)
{
FileName.Add(streamReader.ReadLine().Split('/')[1]);
}
FileName.Sort();
if(FileName[FileName.Count-1].Equals(WriteFile) == false)
{
WriteFile = FileName[FileName.Count - 1];
label1.Text = "FileName : " + WriteFile;
using(WebClient wc = new WebClient())
{
wc.Credentials = new NetworkCredential("root", "pass");
byte[] FileData = wc.DownloadData(FtpUrl + @"\"+WriteFile);
using(FileStream fs = File.Create(di.FullName + @"\" + WriteFile))
{
fs.Write(FileData,0,FileData.Length);
fs.Close();
}
label2.Text = "Process result : Success";
}
}
streamReader.Close();
response.Close();
}
}
catch(Exception ex)
{
_log.LogWrite(ex.Message);
}
答案 0 :(得分:1)
有两种方法可以修复Error 450 Ftp Error:
高级计算机用户解决方案(手动更新):
启动计算机并以管理员身份登录。
单击“开始”按钮,然后选择“所有程序”,“附件”,“系统” 单击工具,然后单击系统还原。
在新窗口中,选择“将我的计算机还原到更早的时间” 选项,然后单击“下一步”。
从“在此列表中选择最新的系统还原点, 单击“还原点”列表,然后单击“下一步”。
在确认窗口中单击“下一步”。
恢复完成后重新启动计算机。
新手计算机用户解决方案(完全自动化):
安装程序并单击“扫描”按钮。
扫描完成后,单击“修复错误”按钮。
重新启动计算机。