Я занимаюсь разработкой приложения .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?