Я пытаюсь создать соединение с удаленным сервером для загрузки файла, соединение должно быть через SSL, и у меня есть только несколько портов, доступных на маршрутизаторах с обеих сторон.Кажется, соединение установлено, но время ожидания Stream requestStream = request.GetRequestStream();
истекло.После проверки журнала трассировки следующая строка кажется подозрительной:
System.Net Information: 0 : [7144] FtpControlStream#33675143 - Created connection from [myIP]:64230 to [theirIP]:990.
Несмотря на то, что говорится, что соединение было создано, я знаю, что порт 64230 не открыт, и я предполагаю, что именно поэтому он терпит неудачу.Так можно ли указать, с какого порта создавать локальное соединение?Или, может быть, мне чего-то не хватает?
[EDIT]:
Я настроил FTP-сайт на IIS на своей локальной машине для тестирования, чтобы посмотреть, что может быть не так, но яУ меня та же проблема.Что интересно, я могу подключиться практически к любому порту с такими же настройками, кроме 990. Теперь я могу исключить брандмауэр, это не проблема.Любые другие догадки?Вот пример кода:
string fileName = "file.pdf";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://[host]:990/file.pdf");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.EnableSsl = true;
request.UsePassive = true;
ServicePointManager.ServerCertificateValidationCallback = AcceptAllCertifications;
request.Credentials = new NetworkCredential("[host]|[username]", "[password]");
Stream requestStream = request.GetRequestStream();
FileStream stream = File.OpenRead(fileName);
const int bufferLength = 1024;
byte[] buffer = new byte[bufferLength];
int count = 0;
int readBytes = 0;
do
{
readBytes = stream.Read(buffer, 0, bufferLength);
requestStream.Write(buffer, 0, readBytes);
count += readBytes;
}
while (readBytes != 0);
stream.Close();
requestStream.Close();
Console.WriteLine("Upload complete");