Что может вызвать исключение OutOfMemoryException при вызове Assembly.GetType? - PullRequest
0 голосов
/ 14 января 2019

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

...