【问题标题】:Acute MissingMethodException急性 MissingMethodException
【发布时间】:2019-07-28 10:01:19
【问题描述】:

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

  1. 此后未对测试、阶段和生产环境进行任何发布 2019 年 6 月 28 日。
  2. 测试环境代码与stage一致,生产环境正常运行。
  3. 直到 2019 年 7 月 25 日,它才停止在开发、舞台和生产方面工作。在此之前:一切都很好。
  4. 端到端集成测试都在使用 Azure Devops 管道的本地构建服务器上成功。
  5. 这是陈词滥调,但它在本地有效。

这很可怕,一个正常运行一个月的东西突然在一夜之间完全停止运行。代码没有任何变化。

我读到 MissingMethodException 指向 DLL 问题 (System.MissingMethodException: Method not found?)。 MissingMethodException 发生在自定义代码中,因此 DLL 问题似乎是合乎逻辑的,但我无法弄清楚为什么一切仍然在测试环境中工作以及为什么它之前工作!如何正确诊断?

【问题讨论】:

  • Core、EF 和 ASP.NET 的哪个版本?你在哪里使用 3.0/preview?
  • @HenkHolterman 感谢您的回复,希望我添加了您想要的信息。
  • 是的,这很有用。也许您可以使用 Kudu 来检查服务器上安装的内容,密切关注所涉及的 DLL 的时间戳。这是相当可疑的,因为 Core3/preview7 是在那天左右推出的。
  • 作为一种解决方法,首先更新/整合最新的 2.2 包。然后将其部署到登台。其他选择是独立部署。
  • 但值得在 GitHub EF 或 Azure 上打开一个问题。当您可以确定您的“自定义 EF”没有问题时。

标签: c# azure azure-web-app-service


【解决方案1】:

显然 .NET Core 依赖于 EntityFrameworkCore。由于这种依赖关系,安装 .NET Core SDK 会附带它自己的 Microsoft.EntityFrameworkCore DLL。只要我的自定义 EntityFrameworkCore DLL 的版本高于 SDK 安装的版本,这不是问题。但他们应用的版本控制似乎不是 EntityFrameworkCore 的版本控制,而是使用的运行时的版本控制。 上周在幕后发生了 API 应用程序的更新。这意味着安装了 2.2.6 运行时。此运行时的 EntityFrameworkCore DLL 的版本号高于我的自定义版本号。因此,应用程序使用的 DLL 发生了突然切换,并且不再找到导致 MissingMethodException 的自定义方法。

我在安装最新的 .NET SDK 后诊断出问题。这导致安装了最新的运行时,并且我的解决方案在本地的行为方式与部署的解决方案相同。我打开了 Modules 窗口(Debug -> Windows -> Modules),然后意识到发生了什么。

这意味着我不再需要自包含部署,但仍然值得研究它以避免由于随机更新而造成的破坏性更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多