Mã sau đây nhằm truy xuất tệp qua FTP. Tuy nhiên, tôi nhận được một lỗi với nó.FtpWebRequest Tải xuống Tệp
serverPath = "ftp://x.x.x.x/tmp/myfile.txt";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath);
request.KeepAlive = true;
request.UsePassive = true;
request.UseBinary = true;
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
// Read the file from the server & write to destination
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) // Error here
using (Stream responseStream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(responseStream))
using (StreamWriter destination = new StreamWriter(destinationFile))
{
destination.Write(reader.ReadToEnd());
destination.Flush();
}
Lỗi này là:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access)
Các tập tin chắc chắn không tồn tại trên máy từ xa và tôi có thể thực hiện ftp này bằng tay (ví dụ: Tôi có quyền). Bất cứ ai có thể cho tôi biết lý do tại sao tôi có thể nhận được lỗi này?
Tôi tìm thấy Wireshark hữu ích cho những thứ như thế này. Bạn có thể thiết lập bộ lọc để xem lưu lượng truy cập FTP giữa máy của bạn và máy chủ. –
Điều gì sẽ xảy ra nếu bạn đặt UsePassive thành false? Tôi không bao giờ có bất kỳ máy chủ làm việc bằng cách sử dụng chế độ thụ động .. – Roy
Điều đó thường sẽ gây ra một lỗi thời gian trong kinh nghiệm của tôi khi nó cố gắng sử dụng một cổng bị chặn bởi tường lửa. –