【发布时间】: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。如果直接版本降级或升级不起作用,请尝试卸载并重新安装。
-
谢谢。我已添加注释。
-
如前所述,我无法卸载或降级某些不存在的东西。如果您有一个工作示例,您能否分享、github 或编辑您的答案以包含 csproj?
标签: asp.net-core azure-active-directory msal