将文件上载到数据库时出现OutOfMemoryException

时间:2015-09-24 01:38:37

标签: c# asp.net-mvc-5 out-of-memory entity-framework-6

我有一个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无法处理。这会让我感到惊讶,因为这个大小的文件不是那么大。至少不与千兆字节的数据进行比较。

0 个答案:

没有答案