【问题标题】:Microsoft.Identity.Web in ASP.NET Core 2.1 projectASP.NET Core 2.1 项目中的 Microsoft.Identity.Web
【发布时间】:2024-04-25 08:05:02
【问题描述】:

有人设法安装 Microsoft.Identity.Web 并在 ASP.NET Core 2.1 上运行?

我有很多 ASP.NET Core 2.1 API 项目,因为它们必须引用针对 .NET 4.7.2 的 DLL。这些应用程序使用 Azure AD 作为身份验证,我最近尝试了几个小时升级到Microsoft.Identity.Web,但没有成功。这取决于Microsoft.Extensions.* 5.0 或更高版本。它会导致 Kestrel 在启动后立即抛出错误:

System.TypeLoadException:无法从程序集“Microsoft.Extensions.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”加载类型“Microsoft.Extensions.Primitives.InplaceStringBuilder”。

在 Microsoft.Net.Http.Headers.DateTimeFormatter.ToRfc1123String(DateTimeOffset dateTime, 布尔引用)
在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.DateHeaderValueManager.SetDateValues(DateTimeOffset 值)
在 Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.CreateServiceContext(IOptions1 options, ILoggerFactory loggerFactory) at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer..ctor(IOptions1 options, ITransportFactory transportFactory, ILoggerFactory loggerFactory)

Extentions.Primitive 变成运行Kestrel 所需的5.0 时,似乎有一个方法removed。有什么解决方法吗?

附加说明(21 年 10 月 13 日):

由于 Microsoft.Extensions.Primitives 没有显式安装,所以它没有显示在 Nuget 包列表中,因此无法降级。如果我尝试显式安装旧版本,例如 2.1.6,它会拒绝并显示错误:

NU1605:检测到包降级:Microsoft.Extensions.Primitives 从 5.0.0 到 2.1.6。直接从项目中引用包以选择不同的版本。 test21 -> Microsoft.Identity.Web 1.18.0 -> Microsoft.Extensions.Caching.Memory 5.0.0 -> Microsoft.Extensions.Primitives (>= 5.0.0) test21 -> Microsoft.Extensions.Primitives (>= 2.1.6)

【问题讨论】:

  • 您是否尝试将 Microsoft.Extensions.primitives 降级到低于 5 的版本,例如:3.1 或 2.1。如果直接版本降级或升级不起作用,请尝试卸载并重新安装。
  • 谢谢。我已添加注释。
  • 在安装所需版本并重建项目之前,您是否尝试过卸载包?如果这样做了,您是否必须检查并尝试thesethis 中的任何一个?
  • 如前所述,我无法卸载或降级某些不存在的东西。如果您有一个工作示例,您能否分享、github 或编辑您的答案以包含 csproj?

标签: asp.net-core azure-active-directory msal


【解决方案1】:

我正在开发 ASP.NET Core web api 2.1 。我有一个类似的 当我尝试使用 Microsoft 身份时出现问题。如你所说 Microsoft.Identity.Web 依赖于 Microsoft.Extensions.Primitives 版本 = 5.0.0。我以前可以 通过从 of 降级该软件包来解决问题 Microsoft.Extensions.Primitives 版本 5.0.0 到版本 2.1.0 和 也可以通过降级 Microsoft.Extensions.Configuration.Abstractions 到 2.1.0 这取决于它,但您也可以尝试其他版本 ,如果错误没有发生。那么你可以尝试与微软相同 身份 。当您这样做时,保存并关闭并启动应用程序 再次。

其他解决方法

  • 有时如果这不起作用,您可能错过了添加 cs.proj 文件中的特定依赖项,或者可能错过了添加类似于错误的包引用。所以请也检查一下。

  • 如果不尝试删除具有这些依赖项的 bin /obj 文件夹,或者 只需添加这些依赖项或目标框架即可

  • 或者您可以通过在包中执行更新命令来解决问题 管理控制台由

    Update-Package -reinstall -Project MyProject

【讨论】:

    【解决方案2】:

    您可以通过Microsoft.Extensions.Primitives将包从版本5.0.0降级到版本2.1.0以解决错误。

    通过使用 NuGet 包管理器。您可以选择任何可用的软件包版本并进行更新。

    如果您在 Visual Studio 中使用 NuGet 管理器(界面),您将能够在安装或更新之前查看包依赖项。

    【讨论】:

      最近更新 更多