2

C# / VS2005 でプログラムを作成して、運用データベースをバックアップし、圧縮して、リモート サーバーに転送しています。リモートサーバーに簡単な ftp サイトをセットアップしました。

問題は、ファイルが約半分 (~500 - 600 MB) しか転送されず、プログラムが例外をスローすることです。

「既存の接続がリモート ホストによって強制的に閉じられました」

私が使用しているコードは、基本的にここから切り取って貼り付けたもので、Jaimon Mathew によってソケットを使用して書かれています。

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

問題を調査しましたが、接続が閉じられないようにするためにできることはないようです。それを修正する唯一の方法は、ソケットの「非同期」メソッドを使用することです。

これを行うためのサンプル コードを検索してみましたが、見つけることができず、実行しようとしているこの単純なタスクが非常に困難であることが証明されているとは信じられません。

大きな(〜1.2 GB)ローカルファイルをリモートftpサイトに転送する簡単な方法はありますか?リモートホストによって接続が閉じられても失敗しない方法はありますか(再接続して転送を再開する必要があると思います) )?

私の上司は、私がこれにどれだけの時間を費やしたかを知ったら、私を殺すつもりです。リモート サーバーにはまだ前日のバックアップがありません。

.NET プログラム内からすべてを実行したいのですが (現在、私たちのシステムは巨大な Rube Goldberg マシンです)、迅速で簡単な解決策が必要です。

ありがとう、

スティーブ

4

3 に答える 3

2

FTP を実行する方法の C# の例がたくさんあります。特に、FTP アップロードの再起動/再試行の例をご覧ください。

于 2009-04-16T19:05:52.850 に答える
1

リンクしたコードは、アップロードの再開をサポートしているようです:

public void upload(string fileName,Boolean resume)

その関数を resume = true で呼び出しても機能しませんか?

于 2009-04-16T19:03:30.237 に答える
0

バックグラウンド インテリジェント転送サービス (BITS) を使用して、HTTP 経由でアップロードしています。これはプラットフォーム固有のソリューションですが、うまく機能し、使いやすいです。これは、Windows Update で使用されるメカニズムと同じです。

于 2009-04-16T20:00:49.973 に答える