我正在考虑使用以下代码,但是我想传输数百个文件,并且它看起来不可行,然后在每个文件传输上断开连接。

request = (FtpWebRequest) FtpWebRequest.Create(FtpAddress + file);

request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(User, Pass);

request.UsePassive = IsPassive;
request.UseBinary = true;
request.KeepAlive = false;

FileStream fs = File.OpenRead("");
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();

Stream ftpStream = request.GetRequestStream();
ftpStream.Write(buffer, 0, buffer.Length);

ftpStream.Close();

我有什么选项使用单个连接上传所有这些文件?

有帮助吗?

解决方案

我尚未确认这是真的,但是在我的快速搜索中,如果您设置了

request.KeepAlive = true;

在您创建的每个请求上,除了最后一个请求,显然只有第一个ftpwebrequest才能完整登录连接。

然后,当您创建最后一个ftpwebrequest时,设置

request.KeepAlive = false;

它将在完成后关闭连接。如果您可以访问FTP服务器的日志,则可以验证这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top