【发布时间】:2011-06-06 15:12:32
【问题描述】:
我尝试从包含超过 1000 个文件的目录中的 FTP 读取文件列表。
我是这样做的:
public static FtpWebRequest GetRequest(string uri)
{
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
req.Credentials = new NetworkCredential("login", "password");
req.KeepAlive = false;
req.UseBinary = false;
req.UsePassive = true;
return req;
}
public static bool CheckConnection()
{
FtpWebResponse respSize = null;
try
{
FtpWebRequest reqFTP = GetRequest(@"ftp://myftp.com");
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
respSize = (FtpWebResponse)reqFTP.GetResponse();
respSize.Close();
respSize = null;
reqFTP.GetResponse().Close();
return true;
}
catch (Exception ex)
{
//...
}
finally
{
if (respSize != null)
respSize.Close();
}
return false;
}
我收到一个错误:
远程服务器返回错误:
(451) 处理中的本地错误。
在 System.Net.FtpWebRequest.SyncRequestCallback(对象 对象)
在 System.Net.FtpWebRequest.RequestCallback(对象 对象)
在 System.Net.CommandStream.Dispose(布尔值 处理)
在 System.IO.Stream.Close()
在 System.IO.Stream.Dispose()
在 System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
在 System.Net.ConnectionPool.PutConnection(PooledStream pooledStream,对象拥有对象, Int32 创建超时,布尔值 可以重复使用)
在 System.Net.FtpWebRequest.FinishRequestStage(RequestStage 阶段)
在 System.Net.FtpWebRequest.SyncRequestCallback(对象 对象)
在 System.Net.FtpWebRequest.RequestCallback(对象 对象)
在 System.Net.CommandStream.Abort(异常 e)
在 System.Net.CommandStream.CheckContinuePipeline()
在 System.Net.FtpWebRequest.DataStreamClosed(CloseExState 关闭状态)
在 System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState 关闭状态)
在 System.Net.FtpDataStream.Dispose(布尔值 处理)
在 System.IO.Stream.Close()
在 System.Net.FtpWebResponse.Close()
在 CheckConnection() 处
有人知道怎么回事吗?
问候 马辛
【问题讨论】:
-
它是否适用于较少数量的文件?
-
是的,它适用于少量文件