如何使用身份 2.2 并且不要在 ApplicationUserManager 上使用 ILookupNormalizer

LPL*_*PLN 4 .net c# asp.net asp.net-mvc asp.net-core-3.0

如何删除身份 core3 preview4 中的任何 ILookupNormalizer 注入?

我使用身份 2.2 并且不能在 ApplicationUserManager 上使用 ILookupNormalizer。我的挛缩 ApplicationUserManager :

public ApplicationUserManager(
            IApplicationUserStore store,
            IOptions<IdentityOptions> optionsAccessor,
            IPasswordHasher<TblUsers> passwordHasher,
            IEnumerable<IUserValidator<TblUsers>> userValidators,
            IEnumerable<IPasswordValidator<TblUsers>> passwordValidators,
            ILookupNormalizer keyNormalizer,
            IdentityErrorDescriber errors,
            IServiceProvider services,
            ILogger<ApplicationUserManager> logger,
            IHttpContextAccessor contextAccessor,
            IUsedPasswordsService usedPasswordsService)
            : base((UserStore<TblUsers, TblOrganizationChart, AbfaContext, int, TblUserClaim, TblUserOrganizationChart, TblUserLogin, TblUserToken, TblRoleClaim>)store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger)
Run Code Online (Sandbox Code Playgroud)

当我在 AddCustomServices 上添加 ILookupNormalizer 时,出现以下错误:

来自程序集“Project.Core,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的“Project.Core.Identity.CS.CustomNormalizers”类型中的方法“NormalizeName”没有实现。

删除“services.AddScoped();”后 我有这个错误:

来自程序集“Project.Core,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的“Project.Core.Identity.ApplicationUserManager”类型中的“方法”“NormalizeKey”没有实现。“

我不需要使用 Normalizer。

如何解决这个问题?

Vah*_*idN 5

ILookupNormalizerIdentity core 3x 中的签名与 2x不同。如果您想继续使用旧项目并且还不想升级它(根据问题的标题),只需使用global.json文件锁定解决方案的框架版本。首先运行dotnet --list-sdks命令查看安装了哪些版本。然后使用dotnet new globaljson --sdk-version 2.2.106命令在解决方案的根目录中创建一个新的。

dotnet --list-sdks
dotnet new globaljson --sdk-version 2.2.106
Run Code Online (Sandbox Code Playgroud)

  • 当你锁定你的 sdk 版本时,你应该使用 `ILookupNormalizer` 的旧签名,其中包含 `string Normalize(string key);` (2认同)