如何在asp.net中将大文件发送到Request Stream

时间:2012-09-03 14:12:55

标签: asp.net asp.net-mvc asp.net-mvc-3 wcf rest

我想向cassansdra存储发送大于800 MB的大文件。但我得到了 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的确切流。

1 个答案:

答案 0 :(得分:1)

默认情况下,使用HttpRequest上传的文件的最大大小为4 MB(4096 KB)。如果你可以访问接收端的代码,你可以在web.config中增加它,虽然我从来没有测试过800+ MB文件:)请记住,Asp.Net将在180秒后超时任何请求,以便实际上限制您可以上传的文件大小。

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

Uploading Files in ASP.NET 2.0

恕我直言,你最好的选择是使用HttpModule以块的形式发送文件。这些可能是有意义的:

Large File Upload Using HttpHandler or HttpModule?

HttpHandler or HttpModule for file upload, large files, progress indicator?

祝你好运:)