我有一个MVC
应用程序,要求我上传一个数据文件。对数据文件的需求是更新我们数据库中的记录。
问题在于,当我尝试读取要保存到数据库的文件时,我得到OutOfMemoryException
。我上传的文件大小为186MB
。我在较小的文件上取得了成功,大致为120MB
。
它会在CopyTo
代码行引发异常。但是,我尝试使用BinaryReader
,甚至将文件保存到服务器并将其读回,但两者都没有区别。相同exception
被抛出。
我的控制器动作是:
public ActionResult UpdateAddresses(HttpPostedFileBase addressFile)
{
using (var addressStream = new MemoryStream())
{
addressFile.InputStream.CopyTo(addressStream);
var addressFileName = addressFile.FileName;
addressFile = null;
documentService.AddDocument(DateTime.Now, addressFile.FileName, FileTypes.ProducerAddressUpdate, addressStream.ToArray(), this.CurrentUser.AccountName);
}
return Index();
}
我也尝试过阅读strea
m。这种方法的问题是,我在声明out of memory exception
后立即获得byte[]
。好像byte array
太大而.NET
无法处理。这会让我感到惊讶,因为这个大小的文件不是那么大。至少不与千兆字节的数据进行比较。