Я получаю исключение, когда пытаюсь подключиться к FTP на свой Win 2008 Server из кода C #, используя VS2008 в качестве отладчика.
Мой тестовый класс выглядит так:
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);
}
}
}
Когда я выполняю код, я получаю сообщение Ошибка соединения с ошибкой FTP 227 в вызове GetRequestStream ().
В исключении я вижу, что соединение не может: 192.168.10.35:52184
Понятия не имею, как получается порт 52184.
Я указываю в ftpServerIP, что это должен быть порт 21.
Я нашел несколько человек с такими же проблемами в Google, но я не нашел хорошего примера того, как это можно решить, и я до сих пор не понимаю, почему это происходит.
Кто-нибудь знает, как решить эту проблему ??
UPDATE:
Я попытался подключиться к другой учетной записи FTP, и там все работает нормально. Поэтому я проверил свой FTP 192.168.10.35:21, но он отлично работает в CuteFTP Pro и тому подобное.
Это только делает это еще более странным ..