2011-01-06 3 views
0

Я работаю над приложением Windows с C# .net. Я использую класс FTPwebrequest для загрузки файла на ftp.it, отлично работает, когда между приложением и Интернетом нет прокси. но он не работает в прокси.Проблема с загрузкой файлов с использованием FTP

FtpWebRequest reqFTP; , если я использую reqFTP.Proxy=new webproxy("proxyservername",21); , то он будет отображать сообщение об ошибке «команды FTP doen't поддержку в HTTP-прокси».

мой код, как этот

FtpWebRequest reqFTP; 
reqFTP = (FtpWebRequest)FtpWebRequest.Create("ftp://uri"); 

reqFTP.Credentials = new NetworkCredential("username", "pwd"); 

reqFTP.KeepAlive = false; 

reqFTP.Method = WebRequestMethods.Ftp.UploadFile; 
reqFTP.UseBinary = true; 
reqFTP.UsePassive = true; 
int buffLength = 2048; 

byte[] buff = new byte[buffLength]; 
int contentLen; 

FileStream fs = fileInf.OpenRead(); 

Stream strm = reqFTP.GetRequestStream(); 

contentLen = fs.Read(buff, 0, buffLength); 

while (contentLen != 0) 
{ 
    strm.Write(buff, 0, contentLen); 
    contentLen = fs.Read(buff, 0, buffLength); 
    prbUpload.Value += contentLen; 
} 

strm.Close(); 
fs.Close(); 

ответ

0

Вы используете HTTP-прокси. Возможно, вы используете этот прокси для просмотра Интернета. Вы не можете использовать http proxy для ftp. Чтобы использовать этот прокси для ftp, вам нужно настроить прокси-сервер для ftp.

Нижняя линия, FTP прокси требуется для FTP, HTTP прокси-сервер необходим для просмотра и т.д ..

Итак, вы отправляете команд FTP через прокси, но прокси поддерживает только HTTP. Так что, я думаю, что сообщение об ошибке теперь более значимым для вас

«команда FTP doen't поддержка в HTTP прокси»

+0

Как я могу настроить прокси-сервер для ftp Programatically. – dhanya

+0

вы не можете. прокси-сервер - это компьютер, на котором запущено программное обеспечение. это программное обеспечение необходимо настроить. Вы не можете его программно настроить из своего приложения, это будет похоже на попытку настройки веб-сервера stackoverflow.com с помощью вашего приложения. –

1

Из документации FtpWebRequest.Proxy недвижимости:

Если указанным прокси является HTTP прокси, только DownloadFile, ListDirectory и ListDirectoryDetails команды: поддерживается.

Таким образом, вы не можете использовать FtpWebRequest, чтобы загрузить файл через FTP через прокси-сервер HTTP. Другие решения могут быть доступны, см. this question, где обсуждаются те же проблемы.

0

Является ли это uploadFile, DownloadFile, ListDirectory или ListDirectoryDetails, Следующий код разрешает все проблемы.

reqFTP.Proxy = new WebProxy(); 

Он инициализирует прокси-сервер пустым экземпляром класса WebProxy, который будет пропустить прокси-сервер внутри.

Смежные вопросы