InvalidProgramException: Common Language Runtime обнаружил недопустимую программу - PullRequest
4 голосов
/ 05 ноября 2010

All

У меня проблемы с развертыванием веб-страницы ASP.NET 4.0. Ошибка

System.InvalidProgramException: Common Language Runtime обнаружил недопустимую программу

Ошибка возникает на IIS7 на 64-битной Windows Server box. Эта же страница работает на IIS7 на моем компьютере для разработки (32-разрядная версия Windows 7) и в среде разработки Visual Studio. Я не знаю каких-либо различий в конфигурации IIS7.

Я использовал PEVerify для проверки DLL в каталоге bin приложения.

Я могу воспроизвести проблему, используя запрос Entity Framework для заполнения DataGrid.DataSource. Это не особенно тяжелый запрос.

Есть идеи о том, что может быть причиной этого? Мой следующий шаг - попытаться просто использовать запросы.

Спасибо за любую помощь.

Ответы [ 3 ]

4 голосов
/ 09 ноября 2010

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

1 голос
/ 05 ноября 2010

Я думаю, что это может быть ряд вопросов.В зависимости от вашей модели Entity Framework, а также от того, насколько она велика / сложна, вы можете использовать ограничение JIT-компилятора .Это относится к 2.0, так что это может относиться и к 4.0.

Предполагая, что у вас нет огромных методов, вы собирали сборку для любого процессора?Если вы указали процессор, несоответствие между 32/64 битами вызовет проблемы.Попробуйте перезапустить с Любой процессор .

Дайте мне знать, если это работает.

Erick

0 голосов
/ 15 августа 2015

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