【发布时间】:2020-01-24 14:50:13
【问题描述】:
我即将将遗留代码(.Net 框架)迁移到 .Net 标准(2.0,不是 2.1,以便它仍然兼容 Framework 4.7 和 Core 3.0)。旧图书馆使用System.Web.Security 访问数据库(用户和成员资格等)。我已经使用 IdentityServer4 将其更改为新的身份模型。
我对这个问题的问题:
我可以在.Net Standard 项目中使用Microsoft.AspNetCore.Identity 吗?
我读了一些关于 Git 的讨论并且很困惑。显然.Net standard 2.0 和 2.1 存在差异,但 NUGET 允许我为.Net Standard 2.0 安装“Microsoft.AspNetCore.Identity”。
我想知道这一点,因为通过“只是”用Microsoft.AspNetCore.Identity 中的新类替换旧类,这会使迁移更容易一些。否则,我需要删除 .Net 标准库中与身份相关的所有内容。
很遗憾,我不能将 .Net Core 3.0 用于库,因为库需要在 WebForms 应用程序 (.Net Framework 4.7) 中使用。
编辑 1:感谢您的回复。这已经帮助了我。 但我有一个后续问题:
让我感到困惑的是,我将在 WebForms 应用程序中使用这些 Lib,并且我阅读了一些关于旧框架不支持新的 aspnet 核心身份模型的内容。例如:我可以在 WebForms 应用程序的代码背后使用自定义 .Net 标准库中的“ApplicationUser”-Class(如果我将所有用户管理包装在单独的 .Net 标准 Dll 中)?
编辑 2: 以下是激怒我的讨论:https://github.com/dotnet/aspnetcore/issues/3756#issuecomment-434114175 关于 .Net Standard 中的“Microsoft.AspNetCore.Identity”支持(甚至命名空间“Microsoft.AspNetCore.Identity”让我觉得它不应该在 .Net Standard 上工作)
编辑 3: 因此,我尝试使用 Microsoft.AspNetCore.Identity 在 .Net 标准库中使用“IdentityUser”。原来 EntityFramework 也需要添加到引用中,我得到了这个错误。
使用“.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, 恢复包“EntityFramework 6.1.0”, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架 '.NETStandard,Version=v2.0'。此软件包可能与您的项目不完全兼容。
如何解决此问题: 对于 .Net Standard 2.0,请安装此 Microsoft.Extensions.Identity.Stores。 对于 .Net Standard 2.1,可以安装 Microsoft.AspNetCore.Identity.EntityFrameworkCore
【问题讨论】:
-
你测试过这个吗?尝试一个简单的例子请也看看这里 -> stackoverflow.com/questions/59644282/…。非常类似于您所说的不是 asp.net 身份和这里 -> github.com/dotnet/announcements/issues/31 和这里 stackoverflow.com/questions/53225028/…
-
Microsoft.AspNetCore.Identity本身是一个 .NET Standard 2.0 项目,所以是的,您可以在任何其他 .NET Standard 2.0 项目中使用。所有 .NET Core 扩展都是 .NET Standard,这意味着您也可以在 .NET Framework 项目中轻松使用它们 -
非常感谢,我去看看。让我感到困惑的是,我将在 WebForms 应用程序中使用这些库,并且我读到一些旧框架不支持 aspnet 核心的新身份模型的东西。例如:我可以在 WebForms 应用程序的代码背后的自定义 .Net 标准库中使用“ApplicationUser”类吗?
-
@user3675331 是的,这就是测试它的方法,不是吗?除非你想要不同的东西。
标签: c# asp.net-core asp.net-identity .net-standard