Базовое соединение было закрыто:При приеме произошла непредвиденная ошибка

StackOverflow https://stackoverflow.com/questions/875348

Вопрос

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

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

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

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

несколько дней искал в сети, решения не нашел.

Это было полезно?

Решение

Вам следует попробовать использовать пассивный режим для 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);
    }
}

Другие советы

Пожалуйста, опубликуйте полное исключение, включая любое 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
}

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top