Различные способы передачи больших файлов на удаленный сервер через asp.net с C # - PullRequest
2 голосов
/ 16 апреля 2009

Я пишу программу на C # / VS2005 для резервного копирования нашей производственной базы данных, сжатия ее и передачи на удаленный сервер. У меня есть простой FTP-сайт, настроенный на удаленном сервере.

Проблема в том, что файл передается только примерно наполовину (~ 500 - 600 МБ), и программа выдает исключение:

«Существующее соединение было принудительно закрыто удаленным хостом»

Код, который я использую, был в основном вырезан и вставлен отсюда, написанный Джеймоном Мэтью с использованием сокетов:

http://www.csharphelp.com/archives/archive9.html

Я исследовал проблему, и похоже, что я ничего не могу сделать, чтобы предотвратить закрытие соединения, и единственный способ исправить это - использовать «асинхронные» методы сокетов.

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

Существует ли простой способ передачи большого (~ 1,2 ГБ) локального файла на удаленный FTP-сайт, который не прервется, если соединение будет закрыто удаленным хостом (я предполагаю, что ему придется повторно подключиться и возобновить перевод)?

Мой босс убьет меня, если узнает, сколько времени я уже потратил на это, а у нас все еще нет резервной копии с предыдущего дня на удаленном сервере.

Я бы предпочел сделать все из программы .NET (в настоящее время наша система представляет собой гигантскую машину Рубе Голдберга), но мне нужно быстрое и простое решение.

Спасибо

Steve

Ответы [ 3 ]

2 голосов
/ 16 апреля 2009

Вот целая куча примеров C # того, как сделать FTP. В частности, посмотрите на пример Restart / Retry FTP Upload .

1 голос
/ 16 апреля 2009

Код, который вы указали для поддержки возобновления загрузки:

public void upload(string fileName,Boolean resume)

Не работает ли вызов этой функции с resume = true?

0 голосов
/ 17 апреля 2009

Я использую фоновую интеллектуальную службу передачи (BITS) для загрузки по HTTP. Это решение для конкретной платформы, но оно отлично работает и его легко использовать. Это тот же механизм, который используется Центром обновления Windows.

...