在 .Net 标准项目中使用 Microsoft.AspNetCore.Identity?

use*_*331 6 c# asp.net-identity asp.net-core .net-standard

我即将将遗留代码(.Net 框架)迁移到 .Net Standard(2.0,而不是 2.1,以便它仍然兼容 Framework 4.7 和 Core 3.0)。旧图书馆用于System.Web.Security访问数据库(用户和会员资格等)。我已经使用 IdentityServer4 将其更改为新的身份模型。

我对此问题的疑问:Microsoft.AspNetCore.Identity我可以在项目中 使用吗.Net Standard

我读了一些关于 Git 的讨论,很困惑。显然 2.0 和 2.1 存在差异.Net standard,但 NUGET 允许我安装.Net Standard 2.0.

我想知道这一点,因为通过“仅”用Microsoft.AspNetCore.Identity. 否则,我需要删除 .Net 标准库中与身份相关的所有内容。

不幸的是,我不能用于.Net Core 3.0库,因为库需要在 WebForms 应用程序(.Net Framework 4.7)中使用。

编辑1:谢谢您的回复。这已经对我有帮助了。但我有一个后续问题:

让我困惑的是,我将在 WebForms 应用程序中使用这些库,并且我读到了一些关于旧框架不支持 aspnet core 的新身份模型的内容。举个例子:我可以在 WebForms 应用程序的代码隐藏中的自定义 .Net 标准库中使用“ApplicationUser”类(在我将所有用户管理包装在单独的 .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, .NETFramework, 恢复包'EntityFramework 6.1.0' 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

Man*_*ari 1

.NET 标准是所有 .NET 实现都应遵守的规范。这是为了标准化 .NET 实现而引入的。

因此,如果您参考文档,您将能够知道 .NET 支持哪些 .NET 实现.NET standard 2.0以及 .NET 支持哪些 .NET 实现.NET Standard 2.1

现在,你的问题是:你可以在项目中使用Microsoft.AspNetCore.Identity包吗?.NET Standard 2.0

只要您将构建代码所针对的 .NET 实现确认符合,您就可以使用它.NET Standard 2.0

根据此链接,它的Microsoft.AspNetCore.Identity v2.2.0目标是 .NET Standard 2.0,因此您可以在项目中使用它。

请注意,.NET Framework不支持.NET Standard 2.1或更高版本。有关更多详细信息,请参阅.NET Standard 2.1 的公告。