This post was most recently updated on January 5th, 2019.Reading Time: 2 minutes.
This post describes one of the more no-brainerish ways of fixing a ‘System.OutOfMemoryException’ exceptions being thrown in your ASP.Net MVC application using C# and Entity Framework.
While developing a web project, for example an ASP.NET MVC web application which is using EF, sometimes when handling a lot of data or complex entities on your dev machine, you encounter this error:
OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.] System.Text.StringBuilder.ToString() +35 System.IO.StreamReader.ReadToEnd() +123 System.Web.Optimization.BundleFile.ApplyTransforms() +74 System.Web.Optimization.DefaultBundleBuilder.BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable`1 files) +472 System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context) +127 System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context) +45 System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath) +166 System.Web.Optimization.AssetManager.DeterminePathsToRender(IEnumerable`1 assets) +205 System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String paths) +35 System.Web.Optimization.Scripts.RenderFormat(String tagFormat, String paths) +107 System.Web.Optimization.Scripts.Render(String paths) +21
This of course blocks you from debugging or even running at least this part of your code locally. What to do?
By default, Visual Studio uses 32-bit version of IIS Express for your deployments. A lot of times, this is good and intended, and not a problem. In some rare cases this might mean, however, that your IIS processes are running out of memory.
I’m going to argue, that most of the time you shouldn’t end up having this issue if your code is sane and smart. Most of the time, if you get this error, you’re building infinite loops or forcing the Entity Framework to load millions and millions of rows in memory. Fix that first.
However, with EF it’s somewhat easy to build apps that use a lot of memory, but work as they should. Perhaps your architecture does make sense, and using a lot of memory is ok?
In this case you might want to accommodate this memory requirement by enabling 64-bit version of IIS locally. That’s probably what you’re using in production anyway.
Thisis luckily a pretty easy change.
How to solve System.OutOfMemoryException in Visual Studio?
The first thing is to make sure you’re not hogging all the available memory for no reason – no neverending loops or infinite recursion! After that, consider the following.
You‘ll need to enable 64-bit IIS Express from VS settings
- Navigate to the following settings page:
- Visual Studio
- Projects and Solutions
- Web Projects
- Enable the following setting:
- “Use the 64 bit version of IIS Express for web sites and projects” (see screenshot 1 below)
- Also, don’t forget to verify you’re building a 64-bit version of your app! (see screenshot 2 below)
And you should be good to go!
He's been a developer from 2004 (starting with PHP and Java), and he's been bending and twisting SharePoint into different shapes since MOSS. Nowadays he's not only working on SharePoint, but also on .NET projects, Azure, Office 365 and a lot of other stuff.
This is his personal professional (e.g. professional, but definitely personal) blog.
Latest posts by Antti K. Koskela (see all)
- IE11 fails to load a (server-side) Blazor web app - November 13, 2019
- How to instantiate your DbContext outside your Data project? - November 11, 2019
- Another year, another Hacktoberfest (2019)! - November 1, 2019