Я пытаюсь загрузить файлы в файл FTPS. Но я не могу заставить код работать. Когда код ниже запускается, программа просто зависает, без каких-либо ошибок. В конце концов произойдет ошибка тайм-аута, в которой указывается системная ошибка. Я пробовал много вещей, также библиотеки и т. Д. Есть ли у кого-нибудь опыт загрузки FTPS? Этот код работает с обычным FTP, который я пробовал.C# FTPS freeze/timeout при подключении к порту 990
var ftpServerIP = "Ftp.company1.company2.nl:990";
var ftpUserID = "Username";
var ftpPassword = "Password";
FileInfo fileInf = new FileInfo(@"D:\testfile.txt");
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;
// Create FtpWebRequest object from the Uri provided
reqFTP =
(FtpWebRequest)FtpWebRequest.Create(
new Uri("ftp://" + ftpServerIP + "/IDEE_MOX/" + fileInf.Name));
reqFTP.EnableSsl = true;
// Provide the WebPermission Credintials
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)
{
MessageBox.Show(ex.Message, "Upload Error");
}
Кто-нибудь знает, что не так с этим кодом и почему его замораживание? Я как бы застрял здесь.
на какой линии он замерзает? – BugFinder
@BugFinder Он запускает Stream strm = reqFTP.GetRequestStream(); а затем он замораживает –
Вы используете порт 990. Является ли сервер прослушиванием ftp на этом порту? Вы хотите использовать FTP или FTPS? Порт 990 предназначен для ftp TSL/SSL. Поскольку это хорошо известный номер порта (до 1028), он может быть заблокирован брандмауэром или антивирусной программой. Порт 990 предназначен для управления, и данные отправляются по разному номеру порта. Вы должны использовать сниффер, например wirehark или fiddler, чтобы помочь разработать код. – jdweng