私が作業しているプロジェクトでは、私はftpアクセスしかないファイルへのhttpアクセスを提供する必要があります。これは、ファイルをダウンロードする必要があるがhttpのみをサポートする外部サービスで使用されます。私はこのコードを試しました:しかし、CPU /メモリの使用量は屋根を通過してゆっくりと消えます。助言がありますか?単純なftpダウンローダー/ httpプロキシ
using System;
using System.Web;
using System.Net;
using System.IO;
public class ftpproxy : IHttpHandler
{
// ftpproxy.ashx?src=ftp://username:[email protected]/staticfiles/foo.f4v
public void ProcessRequest (HttpContext context) {
WebClient wc = new WebClient();
string src = context.Request.QueryString["src"];
using (Stream instr = wc.OpenRead(src))
{
instr.CopyTo(context.Response.OutputStream);
}
}
public bool IsReusable {
get {
return false;
}
}
}
ありがとうございます!
ああ、これらはあなたが何ができるか、大きなファイル(カップルのギグにメガ数百もの)
「WebClient」を使用ブロックにラップしてみましたか? –
また、あなたのコードが現在どのように動作しているのか、私はそれがメモリにすべてロードされ、メモリからディスクに書き込まれると考えています。メモリの負荷を軽減したい場合は、ディスクに書き込む必要があります。 – Origin
私は、入力ストリームから、出力ストリームに、 'CopyTo'がデフォルトで使用する4Kバッファを使って直接コピーする方法があることを期待していました。 –