Исключении invalidprogramexception: общеязыковая среда выполнения обнаружила недопустимую программу
Все,
У меня возникли проблемы с развертыванием ASP.NET веб-страница 4.0. Ошибка
Система.Исключении invalidprogramexception: общеязыковая среда выполнения обнаружила недопустимую программу
Ошибка возникает на IIS7 на 64-разрядном Windows Server box. Та же страница работает на IIS7 в моем окне разработки (32-битная Windows 7) и в среде разработки Visual Studio. Я не знаю никаких различий в конфигурации IIS7.
Я использовал PEVerify для проверки dll в каталог bin приложения.
Я могу воспроизвести проблему, используя запрос Entity Framework для заполнения DataGrid.Источник данных. Это не особенно тяжелый вопрос.
Есть какие-нибудь идеи о том, что может быть причиной этого? Мой следующий шаг-попробовать и просто использовать запросы.
Спасибо за любую помощь.
3 ответа:
Я думаю, что это может быть несколько вопросов. В зависимости от модели Entity Framework и того, насколько она велика/сложна, вы можете столкнуться с ограничением JIT-компилятора. Это относится к версии 2.0, так что это может относиться и к версии 4.0.
Предполагая, что у вас нет каких-либо огромных методов, вы скомпилировали свою сборку для какого-либо процессора? Если вы указали процессор, то несоответствие между 32/64 битами вызовет проблемы. Попробуйте выполнить повторный запуск с помощью любого процессора.
Дайте мне знать, если это завод.
Эрик
Я получил ту же ошибку в строке кода, которая была свободна от ошибок в течение нескольких месяцев. К счастью, я смог вернуть свои изменения в рабочее состояние и проследить свои шаги. Оказывается, что это была строка кода в том же самом
Task.Run()
корпусе, который вызвал ошибку. Страшно то, что в коде не было ничего плохого:var test = user.objectId.HasValue;
но как только я удалил эту строку, ошибка исчезла.public virtual Task<IList<string>> GetRolesAsync(TUser user) { if (user == null) throw new ArgumentNullException("user"); return Task.Run(() => { var test = user.objectId.HasValue; var userRolesQuery = objectManager.buildQueryByFilter<List<security.UserRole>>("user = '{0}'", user.objectId); objectManager.buildSubquery<TRole>("role", userRolesQuery); var userRoles = objectManager.openByQuery<List<security.UserRole>>(userRolesQuery); return (IList<string>)userRoles.Select(userRole => userRole.role.name).ToList(); }); }