Исключении 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 4

3 ответа:

Похоже, что это связано с первичным ключом типа decimal (1,0).

Я думаю, что это может быть несколько вопросов. В зависимости от модели 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();
        });
    }