В моем случае сервер (принадлежащий клиенту) был изменен, чтобы принимать только запросы TLS (SSL). Они, конечно, не сказали нам об этом, и сообщение об ошибке 503 не помогло!
Итак, нам нужно было использовать .EnableSsl
так:
var ftp = WebRequest.Create(uri) as FtpWebRequest;
if (ftp != null) {
ftp.EnableSsl = true; // <- the new bit
ftp.Credentials = myCredentials;
ftp.KeepAlive = false; // <- you may or may not want this
}
return ftp;
Чтобы игнорировать ошибки сертификата, мне также нужно было добавить это:
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
Насколько я понимаю, эта строка имеет глобальный эффект, поэтому просто нужно вызвать ее при запуске приложения.
: о)