質問

次のコードを使用することを考えていますが、何百ものファイルを転送したいのですが、ファイル転送ごとに接続してから切断することは実行可能ではありません。

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

単一の接続を使用して、これらすべてのファイルをアップロードするためのオプションは何ですか?

役に立ちましたか?

解決

私はこれが真実であることを確認していませんが、あなたが設定した場合、私のクイック30秒の検索で

request.KeepAlive = true;

最後のものを除いて作成するすべてのリクエストで、明らかに最初のftpwebrequestのみが完全なログイン接続を行います。

次に、最後のftpwebrequestを作成するときは、設定します

request.KeepAlive = false;

そして、完了したら接続を閉じます。 FTPサーバーのログにアクセスできる場合は、これを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top