0

800 MB を超える大きなファイルを cassansdra ストレージに送信したいのですが、 System.OutOfMemoryExceptionが発生しています。

以下のコードを見つけてください。

HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;

Stream requestStream = request.GetRequestStream();

byte[] buffer = new byte[8 * 1024];

int len;
while ((len = fileToUpload.File.Read(buffer, 0, buffer.Length)) >0)
{
    requestStream.Write(buffer, 0, len);
    requestStream.Flush();
}
return request.GetResponse() as HttpWebResponse;

コードのどの部分を改善する必要があるか教えてください。

fileToUpload は、UI からの正確な 800 MB のストリームです。

4

1 に答える 1

1

デフォルトでは、HttpRequest を使用してアップロードされるファイルの最大サイズは 4 MB (4096 KB) です。受信側のコードにアクセスできる場合は、web.config でこれを増やすことができますが、800 MB 以上のファイルでテストしたことはありません:) Asp.Net は 180 秒後にリクエストをタイムアウトすることに注意してください。アップロードできるファイルのサイズを制限します。

<httpRuntime
  executionTimeout="110" 
  maxRequestLength="4096" />

ASP.NET 2.0 でのファイルのアップロード

私見あなたの最善の策は、HttpModuleを使用してファイルをチャンクで送信することです。これらは興味深いかもしれません:

HttpHandler または HttpModule を使用した大きなファイルのアップロード?

ファイルのアップロード、大きなファイル、進行状況インジケーターの HttpHandler または HttpModule?

頑張ってください:)

于 2012-09-03T14:59:10.373 に答える