Я пытаюсь написать программу на C# для загрузки файла на FTP, проходящий через прокси.C# - Загрузить файл на FTP через HTTP-прокси
Вот код, который я написал:
public new bool Upload(string localFilePath, string pathUpload)
{
Stream FStream = null;
bool retval = false;
FileStream FlStream;
try
{
FtpWebRequest FtpRequest =
(FtpWebRequest) FtpWebRequest.Create(Uri + pathUpload);
FtpRequest.Credentials = new NetworkCredential(User, Password);
if (ProxyAddress != "" && ProxyAddress != null)
{
WebProxy ftpProxy = new WebProxy();
ftpProxy.Address = new System.Uri(ProxyAddress);
ftpProxy.Credentials =
new System.Net.NetworkCredential(ProxyUserId, ProxyPassword);
FtpRequest.Proxy = ftpProxy;
}
FtpRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
FStream = FtpRequest.GetRequestStream();
FileStream fs = File.OpenRead(localFilePath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
FStream.Write(buffer, 0, buffer.Length);
FStream.Close();
FStream.Dispose();
return retval = true;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.ToString());
return false;
}
}
Если я передаю адрес прокси-сервера он говорит, что команда FTP не поддерживается при использовании HTTP-прокси.
Я уже пробовал форсировать FtpRequest.Proxy = null
, как было предложено в другом месте (например, http://www.codeproject.com/Questions/332730/FTP-proxy-problem-in-Csharp-application), но это дает мне исключение «Невозможно подключиться к удаленному серверу».
Я также пробовал использовать класс WebClient
вместо FtpWebRequest
, но он дает мне те же проблемы.
Заранее за вашу помощь.