frosty
frosty

Reputation: 5370

System.OutOfMemoryException on file download

I have an ashx handler with the following code. The idea is to hide the path of the file and prompt a download

       context.Response.Clear();
       context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
       context.Response.AddHeader("Content-Length", file.Length.ToString());
       context.Response.ContentType = "application/octet-stream";
       context.Response.WriteFile(file.FullName);

This works fine for some files however on others i get

Exception of type 'System.OutOfMemoryException' was thrown.

Upvotes: 3

Views: 3872

Answers (2)

JoeBilly
JoeBilly

Reputation: 3107

Very weird, 7Mb is really small. Maybe there's a low limit on your Application Pool ?

If you only need a file download handler, use HttpResponse.TransmitFile() which don't buffer the file in memory.

http://msdn.microsoft.com/en-us/library/12s31dhy%28VS.80%29.aspx

Upvotes: 6

Melvin
Melvin

Reputation: 258

You have filled system memory. With larger files, transferred data is buffered in memory. I would suggest creating your own custom caching method.

Upvotes: -1

Related Questions