Острое исключение MissingMethodException

Я запускаю пользовательскую версию EntityFrameworkCore, которая имеет некоторые дополнительные функции, которые мне нужны. С четверга 25.07.2019 я получаю MissingMethodException для 3 из 4 моих планов обслуживания приложений: разработка, этап и производство. Тестовая, рабочая и рабочая среда синхронизированы и содержат один и тот же код. Поэтому очень странно, что тестовая среда все еще работает. У меня также есть интеграционные тесты, настроенные в конвейере Azure Devops. Конвейер выполняет следующие задачи: использование dotnet, восстановление dotnet, сборка dotnet, тестирование dotnet, публикация dotnet. И все испытания проходят успешно. Только на сервисе приложений одни и те же запросы не работают.

  1. Публикация в тестовой, рабочей и производственной среде не производилась, поскольку 28.06.2019.
  2. Тестовая среда имеет тот же код, что и рабочая среда, и работает правильно.
  3. Только 25.07.2019 он перестал работать над разработкой, сценой и производством. До этого: все нормально.
  4. Все сквозные интеграционные тесты проходят успешно на локальном сервере сборки с использованием конвейера Azure Devops.
  5. Это клише, но это работает локально.

Это очень страшно, когда что-то, что нормально работало в течение месяца, вдруг в одночасье перестает работать полностью. Без каких-либо изменений в коде.

Я читал, что MissingMethodException указывает на проблему с DLL (System.MissingMethodException: метод не найден?). MissingMethodException возникает в пользовательском коде, поэтому проблема с DLL кажется логичной, но я не могу понять, почему тогда все еще работает в тестовой среде и почему это работало раньше! Как я могу правильно диагностировать это?

  • сетевое приложение2.2
  • Пакет SDK для .NET 2.2.105
  • Microsoft.AspNetCore.App 2.2.0 (неявный)
  • Microsoft.AspNetCore.Mvc 2.2.0
  • Обычай EntityFrameworkCore на основе EntityFrameworkCore-релиз-2.2 ветка

Какие версии Core, EF и ASP.NET? Где вы используете 3.0/превью?

Henk Holterman 28.07.2019 13:48

@HenkHolterman Спасибо за ваш ответ, надеюсь, я добавил информацию, которую вы хотели.

bdebaere 28.07.2019 15:10

Да, это полезно. Возможно, вы могли бы использовать Kudu для проверки того, что установлено на сервере, и следить за временными метками задействованных DLL. Это довольно подозрительно, потому что Core3/preview7 был выпущен примерно в этот же день.

Henk Holterman 28.07.2019 17:41

В качестве обходного пути сначала обновите/консолидируйте последние пакеты 2.2. Затем разверните это на стадии. Другим вариантом было бы развертывание как автономное.

Henk Holterman 28.07.2019 17:42

Но стоит открыть вопрос на GitHub EF или с Azure. Когда вы можете быть уверены, что ваш «Custom EF» не виноват.

Henk Holterman 28.07.2019 17:42

@HenkHolterman Спасибо за ваш ответ. Развертывание как автономное работает, поэтому, по крайней мере, у меня уже есть один обходной путь. Но я не знаю, почему это работает, что для меня является самым важным элементом. Есть ли у вас какие-либо идеи? Является ли развертывание автономным рекомендуемым подходом?

bdebaere 28.07.2019 17:59

Ну вот аналогичная проблема несколько лет назад. Что-то было обновлено, что должно было быть обратно совместимо, но это не так.

Henk Holterman 28.07.2019 18:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
214
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По-видимому, .NET Core зависит от EntityFrameworkCore. Из-за этой зависимости при установке пакета SDK для .NET Core поставляются собственные библиотеки DLL Microsoft.EntityFrameworkCore. Это не проблема, если мои пользовательские DLL EntityFrameworkCore имеют более позднюю версию, чем установленные SDK. Но версии, которые они применяют, похоже, не являются версиями EntityFrameworkCore, а скорее версиями используемой среды выполнения. На прошлой неделе за кулисами произошло обновление приложений API. Это означало, что была установлена ​​среда выполнения 2.2.6. В этой среде выполнения есть библиотеки DLL EntityFrameworkCore с более высоким номером версии, чем моя пользовательская. Из-за этого произошло внезапное переключение DLL, используемых приложением, и пользовательский метод больше не был найден, что привело к MissingMethodException.

Я диагностировал проблему после установки последней версии .NET SDK. Это привело к тому, что была установлена ​​​​последняя среда выполнения, и мое решение вело себя так же локально, как и развернутые. Я открыл окно модулей (Отладка -> Windows -> Модули) и понял, что происходит.

Это означает, что мне больше не нужны автономные развертывания, но тем не менее, вероятно, стоит изучить это, чтобы избежать критических изменений из-за случайных обновлений.

Другие вопросы по теме