1

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

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();

使用单个连接上传所有这些文件有哪些选择?

4

1 回答 1

3

我还没有验证这是真的,但在我快速的 30 秒搜索中,如果你设置

request.KeepAlive = true;

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

然后当你创建最后一个 FTPWebRequest 时,设置

request.KeepAlive = false;

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

于 2011-01-18T16:58:11.397 回答