2009-05-17 3 views
4

Когда я пытаюсь моя программа на моей Win2k8 машине он работает нормально, но на победу 2k3 это дает мне эту ошибку, что сообщение об ошибкеБазовое соединение закрыто: Непредвиденная ошибка приема

вот код, который генераторный ошибка

WebClient wc = new WebClient(); 
wc.DownloadFile("ftp://ftp.website.com/sample.zip"); 

есть странная деталь. если я полностью отключу брандмауэр на сервере. ошибка уходит. но все равно ошибки, если я добавлю программу в список исключений и включите брандмауэр.

есть поиск в Интернете в течение нескольких дней, не найдено ни одного решения.

ответ

6

Вы должны попробовать использовать пассивный режим для FTP. Класс WebClient не позволяет этого, но FtpWebRequest делает.

FtpWebRequest request = WebRequest.Create("ftp://ftp.website.com/sample.zip") as FtpWebRequest; 
request.UsePassive = true; 
FtpWebResponse response = request.GetResponse() as FtpWebResponse; 
Stream ftpStream = response.GetResponse(); 
int bufferSize = 8192; 
byte[] buffer = new byte[bufferSize]; 
using (FileStream fileStream = new FileStream("localfile.zip", FileMode.Create, FileAccess.Write)) 
{ 
    int nBytes; 
    while((nBytes = ftpStream.Read(buffer, 0, bufferSize) > 0) 
    { 
     fileStream.Write(buffer, 0, nBytes); 
    } 
} 
+0

Как использовать FtpWebRequest для загрузки файла и сохранения его на локальном диске? Я привел только примеры, показывающие, как отображать ответ сервера. – 2009-05-17 21:52:01

+0

Я не могу опубликовать код в комментариях ... Я обновил свой ответ –

+0

Что нового? Я не вижу этого в вашем коде. спасибо – 2009-05-17 23:43:28

1

Пожалуйста выкладываю полную исключения, включая любые InnerException:

try 
{ 
    WebClient wc = new WebClient(); 
    wc.DownloadFile("ftp://ftp.website.com/sample.zip"); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.ToString()); // Or Debug.Trace, or whatever 
    throw; // As if the catch were not present 
} 
+0

InnerException пуст – 2009-05-17 21:52:10

+0

Опубликовать все это в любом случае, для трассировки стека. –

1

У меня была аналогичная проблема (не FTP) и другое решение

среда производства сервера была сделана настолько безопасным что сервер не смог достичь URL-адреса.

Быстрое тестирование - использовать браузер на поле и посмотреть, можете ли вы перейти к URL-адресу.

Надеюсь, это поможет кому-то.

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