Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как правильно оборвать поток докачки с ФТП (C#.NET)

16K
17 декабря 2006 года
o2_
11 / / 25.09.2006
Стандартный пример загрузки файлов по фтп с msdn:
Код:
static void Download(string downloadUrl)
        {
            Stream responseStream = null;
            FileStream fileStream = null;
            StreamReader reader = null;
            try
            {
                FtpWebRequest downloadRequest =
                    (FtpWebRequest)WebRequest.Create(downloadUrl);
                FtpWebResponse downloadResponse =
                    (FtpWebResponse)downloadRequest.GetResponse();
                responseStream = downloadResponse.GetResponseStream();

                string fileName =
                    Path.GetFileName(downloadRequest.RequestUri.AbsolutePath);

                if (fileName.Length == 0)
                {
                    reader = new StreamReader(responseStream);
                    Console.WriteLine(reader.ReadToEnd());
                }
                else
                {
                    fileStream = File.Create(fileName);
                    byte[] buffer = new byte[1024];
                    int bytesRead;

                    //Сюда мне нужно внести изменения.
                    while (true)
                    {
                        bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                        if (bytesRead == 0)
                            break;
                        fileStream.Write(buffer, 0, bytesRead);
                    }
                }
                Console.WriteLine("Download complete.");
            }
            catch (UriFormatException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (WebException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (IOException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                else if (responseStream != null)
                    responseStream.Close();
                if (fileStream != null)
                    fileStream.Close();
            }
        }


Теперь в ту часть, которую я пометил для изменения я добавляю следующее:
Код:
while (true)
{
    bytesRead = responseStream.Read(buffer, 0, buffer.Length);
    if (bytesRead == 0)
        break;
    fileStream.Write(buffer, 0, bytesRead);

    //пошло добавленное
    FTPClientDownloadFileProgressArgs e = new FTPClientDownloadFileProgressArgs(read);
    if (OnDownloadFileProgress != null)
    OnDownloadFileProgress(this, e);

    if (e.Cancel == true)
    {
        break;
    }
}


Но когда e.Cancel == true программа вылетает с ошибкой:[INDENT]
An unhandled exception of type 'System.Net.WebException' occurred in System.dll

Additional information: Удаленный сервер возвратил ошибку: (451) Локальная ошибка при обработке.[/INDENT]
Что не так делаю?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог