Хорошо, у меня есть странный пример, и я хочу знать, сталкивался ли кто-нибудь из вас с чем-либо подобным.
Итак, у меня есть это веб-приложение, которое загружает кучу DLLотражение.В основном он ищет типы, которые являются производными от определенных абстрактных типов, и добавляет их в список того, что он может сделать.
Вот странная часть.
При разработке никогда не возникает проблем.При установке никогда не возникает проблем с чего начать.Затем, в на первый взгляд случайное время, приложение разрывается при попытке найти все типы.
У меня было 2 сайта, расположенных рядом, и один работал, а другой - нет, и они были настроены точно (и я имею в виду точно) то же самое.
IISRESET никогда не помогал, но это помогло:
Я просто переместил все библиотеки DLL из каталога bin, а затем переместил их обратно.Правильно, я просто переместил их из каталога bin, затем положил обратно туда, откуда они пришли, и все работало нормально.
Есть идеи?
Есть еще информация
Когда сайт работает, я замечаю следующее: после IISRESET он все еще работает, но переработка пула приложений приведет к его поломке.
Когда сайт сломан: Neiter IISRESET или переработкапул приложений исправляет это, но перемещение одного dll, а затем обратно исправляет его.
Даже больше информации
Таким образом, получается, что IsAssignableFrom
не возвращаетправильное значение.Я бы не поверил, что это правда, но мой регистратор записал результат и 2 типа, и он определенно вернул неправильное значение.Сумасшедшая вещь в том, что одна и та же dll будет возвращать разные значения в разное время при сравнении одних и тех же 2 типов.
Еще больше информации
Определенный класс, который IsAssignableFrom
происходит сбой в расположенном в файле с другими классами.Если я переместить класс в свой собственный файл, то все работает нормально.Однако, если он находится в том же файле, что и другие классы (даже если он находится в своем собственном блоке namespace
), тогда ссылка Type
неверна.Ссылка Type
будет иметь правильное имя и методы, но она не может найти правильный конструктор.