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 回答