Tôi đã tạo một ứng dụng khách FTP kết nối nhiều lần trong ngày để truy xuất các tệp nhật ký từ máy chủ FTP.Cách ngắt kết nối đúng cách từ máy chủ FTP với FtpWebRequest
Vấn đề là sau một vài giờ tôi nhận được thông báo lỗi từ máy chủ FTP (-421 giới hạn phiên đạt được ..). Khi tôi kiểm tra các kết nối với netstat, tôi có thể thấy một số kết nối 'THÀNH LẬP' cho máy chủ mặc dù tôi đã "đóng" kết nối.
Khi tôi cố gắng thực hiện tương tự trên dòng lệnh hoặc FileZilla, các kết nối được đóng đúng cách.
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
FileStream localFileStream = new FileStream(localFile, FileMode.Create);
int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
/* Resource Cleanup */
localFileStream.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
Làm cách nào để đóng/ngắt kết nối đúng cách? Tôi có quên gì không?
AFAIK FtpWebResponse không triển khai giao diện IDisposable. Tôi sẽ thử thêm một khối cuối cùng và đóng các dòng trong đó. – user797717
Bạn có chắc chắn, MSDN có vẻ như nói nó. http://msdn.microsoft.com/en-us/library/system.net.ftpwebresponse(v=vs.110).aspx – Nattrass
Vâng, bạn nói đúng. Tôi đã cố gắng để bọc FtpWebRequest và không phải là FtpWebResponse. – user797717