1

私は自分のプロジェクトでBITSを使用しています-大きなサイズの送信ファイル用のバックグラウンドインテリジェント転送サービス。C# コードで SharpBITS.NET を使用する。サーバーからクライアントにファイルをアップロードしたい。私は今、側面に注意します。

- - - - - - -クライアント側 - - - - - - - -

static void Main(string[] args) {

        string local = @"I:\a.mp3";

        string destination = "http://192.168.56.128/BitsTest/Home/FileUpload";

        string remoteFile = @destination;
        string localFile = local;
        if (!string.IsNullOrEmpty(localFile) && System.IO.File.Exists(localFile))
        {
            var bitsManager = new BitsManager();
            var job = bitsManager.CreateJob("uploading file", JobType.Upload);
            job.NotificationFlags = NotificationFlags.JobErrorOccured |      NotificationFlags.JobModified |
                                    NotificationFlags.JobTransferred;

            job.AddFile(remoteFile, localFile);
            job.Resume();

            job.OnJobError += new EventHandler<JobErrorNotificationEventArgs>(job_OnJobError);

        }
    }

これは単純なコンソール アプリケーションです。ローカル -- 送信したいファイルのパス、送信先 -- パスはレシーバー、リモート サーバーです。プログラムを実行すると、job.Error take mi follow --- 「サーバーの応答が無効でした。サーバーが定義されたプロトコルに従っていませんでした。ジョブを再開すると、バックグラウンド インテリジェント転送サービス (BITS) が再試行します。 -- BG_E_HTTP_ERROR_200 .-2145845048, 0x801900C8"

クライアント (レシーバー) の場合、次のコードがあります。これは Mvs 3 の小さなプロジェクトであり、宛先パスで移動するアクションのみを表示します。

 public ActionResult FileUpload()
        {
            try
            {
                HttpPostedFileBase file = Request.Files[0];
                file.SaveAs(System.IO.Path.Combine(Server.MapPath("/BitsTest/"), file.FileName));
            }
            catch
            { }
            /*System.IO.File.Move(Server.MapPath("/BitsTest/bin/aa.png"), Server.MapPath("/BitsTest/Content/aa.png"));*/
}

ただし、FileUpload アクションはファイルを受け取りません。クライアント側でファイルを受信する方法がわかりません。ご覧のとおり、受信ファイルに HttpPostedFileBase を使用しましたが、機能していません。

私のホスト サーバーは Windows サーバー 2008 r2 で、BITS に必要な手順を実行しました。詳細については、次のサイトを参照してくださいhttp://technet.microsoft.com/en-us/library/cc431377.aspx ---- Configuration Manager 2007 サイト システム用に Windows Server 2008 を構成する方法。

ホストサーバーでファイルを受信できるようにするにはどうすればよいかわかりません。できることを教えてください。

4

1 に答える 1

0

Webアプリケーションが使用するようなステートレスな方法では、応答が完了するとサーバーに接続できなくなります。クライアント側からサーバーをポーリングできますが、クライアントはサーバーが追加のビットを送信するのをリッスンしていません。

「過去」では、ActiveXコントロール、Javaアプレットなど(今日のSilverlight?)をセットアップして、引き続きリッスンすることができましたが、これは単純なWebスタイルの開発ではありません。

websocketAPIを使用する場合は、HTML5でオプションが拡張されます。HTML5のすべての部分と同様に、すべてのブラウザがまだ「標準」を採用しているわけではないため、実装にこれらのビットを使用するリスクがあります(採用は今後10〜12年で完了すると予想されます:->)。

于 2011-10-12T15:16:17.743 に答える