我正在开发.NET MVC应用程序,最近通过nuget引入了一个新库。现在,正在加载的应用程序将抛出OutOfMemoryException
。
错误指向我们定义会话状态提供程序的web.config的一行:
<add name="MongoDBSessionStateProvider" type="UserDefinedType" description="MongoDB Session State Store provider" />
值得注意的是,UserDefinedType只是类名,而不是程序集限定的类名。
我已经确定问题似乎是,如果没有指定哪个程序集,它将仅在所有程序集中查找,而在该新库的程序集中查找时,将引发内存不足异常。我将其范围缩小到可以在这两行中进行复制:
var assembly = Assembly.LoadFile(@"C:\MyProject\packages\NReco.PdfRenderer.1.2.2\lib\net20\NReco.PdfRenderer.dll");
var type = assembly.GetType("UserDefinedType", false, true);
我进一步注意到,如果将最后一个参数(ignoreCase)设置为false,则错误不再发生。
虽然我可以通过更完整地指定用于会话提供程序的类来解决特定情况下此问题的症状,但我担心这的根本原因将来是否会导致其他问题,因此我很担心关于在生产代码中使用它。
那么有人可以向我解释造成OutOfMemoryException的原因吗?