Tôi tiếp tục bị ngoại lệ khi tôi cố gắng FTP đến máy chủ Win 2008 của tôi từ mã C# bằng cách sử dụng VS2008 làm trình gỡ lỗi.Đặt số cổng khi sử dụng FtpWebRequest trong C#
lớp thử nghiệm của tôi trông như thế này:
public class FTP
{
private string ftpServerIP = "192.168.10.35:21";
private string ftpUserID = "Administrator";
private string ftpPassword = "XXXXXXXX";
private string uploadToFolder = "uploadtest";
public void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + uploadToFolder + "/" + fileInf.Name;
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length;
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
try
{
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
Khi tôi thực thi mã tôi nhận được một kết nối không thành công với FTP lỗi 227 trong GetRequestStream() gọi. Trong ngoại trừ tôi có thể nhìn thấy kết nối thất bại trong việc: 192.168.10.35:52184
Tôi không có ý tưởng làm thế nào nó đi kèm với cổng 52184. tôi chỉ định trong ftpServerIP rằng nó phải là cổng 21.
Tôi đã tìm thấy một vài người với cùng một vấn đề trên google nhưng tôi đã không tìm thấy một ví dụ tốt về cách này được giải quyết và tôi vẫn không hiểu tại sao nó xảy ra.
Bất kỳ ai biết cách xử lý vấn đề này ??
CẬP NHẬT:
Tôi đã cố gắng kết nối với một tài khoản FTP khác và tất cả đều hoạt động tốt. Vì vậy, tôi đã thử nghiệm FTP 192.168.10.35:21 nhưng nó hoạt động tốt trong CuteFTP Pro và thích. Điều này chỉ làm cho nó thậm chí còn lạ hơn ..
Tôi nghĩ rằng tôi thấy sự khác biệt nhưng tôi không thay đổi từ Thụ động sang Hoạt động, có ai có hướng dẫn tốt về điều đó không? –