【问题标题】:Kestrel fail: Can not load Microsoft.Extensions.Logging.AbstractionsKestrel 失败:无法加载 Microsoft.Extensions.Logging.Abstractions
【发布时间】:2020-09-07 20:13:37
【问题描述】:

我有一个非常简单的 Kestrel / ASP.NET Core 项目成功部署到我的 Windows 2008 R2 服务器。(从一个空的 Web 项目开始 + IdentityServer4 nuget I was following this Getting Started page

所以,我最初可以检索“发现”JSON 文档。

然后,(per this guide) 我添加了几个 NuGet 包,一些视图/CSS 等...

  • Microsoft.AspNetCore.Mvc -版本 1.1.0
  • Microsoft.ApsNetCore.StaticFiles -版本 1.1.0

升级后的解决方案在我的 Win7 开发盒上运行良好,但是,在重新部署之后……现在我得到了可怕的 502.5 错误页面。如果我进入服务器并尝试通过命令行“跳转启动”可执行文件。我可以看到这个错误:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Extensions.Logging.Abstractions,Version=1.1.1.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)在 Ross.Web.Applications.Identity.Program.Main(String[] args)

我哪里做错了?

我可以看到前面提到的 DLL,Microsoft.Extensions.Logging.Abstractions,已发布到服务器的文件系统。我猜我需要做一个绑定重定向什么的,但是,我对核心太陌生了,不知道怎么做。

更新
将我的 NuGet 包升级到最新后.. 错误类似,但现在找不到:Microsoft.AspNetCore.Hosting.Abstractions, Version=1.1.2.0

【问题讨论】:

    标签: asp.net-core identityserver4 kestrel-http-server


    【解决方案1】:

    解决方案中有多个项目的人,请注意:

    这主要是因为您的解决方案中有多个项目,并且提到的包都安装在它们中但是具有不同的版本

    假设异常如下:

    只需停止调试并转到Manage NuGet Packages for Solution 并在已安装选项卡中搜索该软件包:

    如您所见,我在两个不同版本的项目中都有这个包,这就是重点!只需将低版本更新为高版本即可。

    【讨论】:

    • 您可以使用合并选项卡,它显示所有不同版本的包并允许更新所有项目
    • 就我而言,我有一个实用程序项目,它是两个不同项目的依赖项。在某个时候,我将Microsoft.Extensions.Logging 介绍给了一个父项目的实用程序项目,但它破坏了另一个。损坏的项目是一个 Azure WebJob,并且在 WebJob 代码中有代码失败,System.TypeLoadException: at Microsoft.Azure.WebJobs.Logging.FormattedLogValuesCollection ...。我只能假设 WebJob 代码对 Microsoft.Extensions.Logging 的依赖与我安装的版本冲突:)
    【解决方案2】:

    好的,我必须清除我的服务器目录.. 并重新部署。 我看过其他关于删除“bin”的答案,但很困惑,因为core web 部署没有实际的/bin 目录。

    现在,我的意思是,“清除二进制文件......无论它们在哪里”

    【讨论】:

    • 您应该在每次部署时都这样做,这是一种很好的做法,如果您最终删除依赖项,您将不会在部署中出现僵尸程序集。很高兴您找到了解决方案。
    【解决方案3】:

    这是混合 1.1.0 和 1.1.1 asp.net 核心依赖项时的常见问题。

    最简单的解决方案是将所有依赖项更新到 1.1.1。如果这不可能,那么您将需要添加绑定重定向以将 1.1.1 依赖项重定向到目标 1.1.0 程序集。

    更改这些依赖项或添加绑定重定向后,请在本地清除 /bin 文件夹,然后在下一次构建时打开 clean。

    【讨论】:

    • 挣扎了一个小时。永远不会得到这个。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-05-07
    • 2020-02-18
    • 1970-01-01
    • 2021-05-01
    • 2016-05-03
    • 2023-02-07
    • 2018-06-13
    • 2016-01-16
    相关资源
    最近更新 更多