急性缺失方法异常

我正在运行一个自定义 EntityFrameworkCore 版本,它具有一些我需要的附加功能。自 2019 年 7 月 25 日星期四以来,我的 4 个应用程序服务计划中的 3 个出现了 MissingMethodException:开发、阶段和生产。测试、阶段和生产环境是同步的,并且包含完全相同的代码。因此,测试环境仍然有效是非常奇怪的。我还在 Azure Devops 管道中设置了集成测试。该管道执行以下任务:使用 dotnet、dotnet 恢复、dotnet 构建、dotnet 测试、dotnet 发布。所有测试都成功。仅在应用程序服务上,相同的请求不起作用。

  1. 自2019年6月28日以来,没有对测试、阶段和生产环境进行任何发布。

  2. 测试环境与阶段代码一致,生产环境运行正常。

  3. 直到 2019 年 7 月 25 日,它才停止了开发、阶段和生产工作。在此之前:一切都很好。

  4. 端到端集成测试均在使用 Azure Devops 管道的本地构建服务器上成功。

  5. 这是陈词滥调,但它在本地有效。

这是非常可怕的,一个正常运行了一个月的东西突然一夜之间就完全停止运行了。无需更改任何代码。

MissingMethodException 发生在自定义代码中,因此 DLL 问题似乎是合乎逻辑的,但我无法弄清楚为什么一切仍然在测试环境中工作以及为什么它之前工作!我怎样才能正确诊断这个问题?

  • netcoreapp2.2

  • .NET SDK 2.2.105

  • Microsoft.AspNetCore.App 2.2.0(隐式)

  • 微软.AspNetCore.Mvc 2.2.0

  • 基于EntityFrameworkCore-release-2.2分支的自定义EntityFrameworkCore


翻翻过去那场雪
浏览 75回答 1
1回答

桃花长相依

显然 .NET Core 依赖于 EntityFrameworkCore。由于存在这种依赖性,安装 .NET Core SDK 时会附带其自己的 Microsoft.EntityFrameworkCore DLL。只要我的自定义 EntityFrameworkCore DLL 的版本高于 SDK 安装的版本,这就不成问题。但它们应用的版本控制似乎不是 EntityFrameworkCore 的版本控制,而是所使用的运行时的版本控制。上周,API 应用程序在幕后发生了更新。这意味着 2.2.6 运行时已安装。该运行时的 EntityFrameworkCore DLL 的版本号比我的自定义版本号更高。因此,应用程序使用的 DLL 突然发生切换,并且不再找到自定义方法,从而导致 MissingMethodException。我在安装最新的 .NET SDK 后诊断了该问题。这导致安装了最新的运行时,并且我的解决方案在本地的行为方式与部署的解决方案相同。我打开“模块”窗口(“调试”->“窗口”->“模块”),然后意识到发生了什么。这意味着我不再需要独立的部署,但仍然值得研究一下,以避免由于随机更新而导致重大更改。
打开App,查看更多内容
随时随地看视频慕课网APP