3

BITS を介してファイルをダウンロードしようとしていますが、GET 要求の http ヘッダーで「referer」を指定できなかったため、ジョブが失敗しました (エラーが発生しました)。

        BitsManager manager = new BitsManager();           
        manager.EnumJobs(JobOwner.CurrentUser);
        BitsJob newJob = manager.CreateJob(j.filename, JobType.Download);
        j.jobID = newJob.JobId;

        newJob.AddFile(j.serverLink, "C:\\Downloads\\" + j.filename);
        newJob.Priority = JobPriority.ForeGround;
        newJob.MinimumRetryDelay = 60;
        manager.OnJobTransferred += new EventHandler<NotificationEventArgs>(manager_OnJobTransferred);
        manager.OnJobModified += new EventHandler<NotificationEventArgs>(manager_OnJobModified);
        newJob.Resume();

ジョブの GET 要求のヘッダーを構成する方法はありますか?

ありがとう、

サニー

4

2 に答える 2

1

HTTP サーバーが BITS の HTTP 要件と互換性がない可能性があるように思えます

BITS ダウンロードの HTTP 要件

BITS は、HTTP および HTTPS のダウンロードとアップロードをサポートしており、サーバーが HTTP/1.1 プロトコルをサポートしている必要があります。ダウンロードの場合、HTTP サーバーの Head メソッドはファイル サイズを返す必要があり、その Get メソッドは Content-Range ヘッダーと Content-Length ヘッダーをサポートする必要があります。その結果、BITS は静的ファイル コンテンツのみを転送し、動的コンテンツを転送しようとするとエラーが生成されます。ただし、ASP、ISAPI、または CGI スクリプトが Content-Range ヘッダーと Content-Length ヘッダーをサポートしている場合を除きます。

BITS は、Head メソッドと Get メソッドの要件を満たしている限り、HTTP/1.0 サーバーを使用できます。

ファイルのダウンロード範囲をサポートするには、サーバーが次の要件をサポートしている必要があります。

  • MIME ヘッダーに、標準の Content-Range ヘッダーと Content-Type ヘッダー、および最大 180 バイトのその他のヘッダーを含めることができるようにします。

  • HTTP ヘッダーと最初の境界文字列の間に最大 2 つの CR/LF を許可します。

詳細については、このリンクを確認してください

于 2012-10-26T12:57:23.827 に答える