Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FilePathResult thrown an OutOfMemoryException with large file

Tags:

c#

asp.net-mvc

I have this Action in my controller which returns a file to the user.

public virtual ActionResult ReturnFile(string fileName, string filePath, string contentType)
{
    var cd = new System.Net.Mime.ContentDisposition
    {
        FileName = fileName,

        // always prompt the user for downloading, set to true if you want 
        // the browser to try to show the file inline
        Inline = false,
    };

    // set token for close the modal-window
    CookiesHelper.SetValueDownloadTokenInCookie();
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(filePath, contentType);
}

It is working fine, but the problem is that when the file is large (a little more than 220 Mb) it is throwing an OutOfMemoryException.

This is the Stack Trace

[OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.]
   System.IO.MemoryStream.set_Capacity(Int32 value) +93
   System.IO.MemoryStream.EnsureCapacity(Int32 value) +64
   System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +330
   Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter.Write(Byte[] buffer, Int32 offset, Int32 count) +106
   System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr) +9509748
   System.Web.HttpResponse.FilterOutput() +104
   System.Web.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +49
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

Any ideas?

like image 785
sabotero Avatar asked Nov 29 '13 09:11

sabotero


1 Answers

It is because your request is using PageInspector as indicated by this line of your stack trace:

Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter.Write(Byte[] buffer, Int32 offset, Int32 count) +106

To fix this, uncheck the browser checkbox in Visual Studio as in the following screen shot:

Uncheck Browser Link

like image 123
rhughes Avatar answered Nov 01 '22 23:11

rhughes