如何使用身份2.2和不使用ApplicationUserManager上的ILookupNormalizer

时间:2019-04-29 08:18:47

标签: c# asp.net .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)

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

  

程序集“ Project.Core,版本= 1.0.0.0,文化=中性,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。

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

Identity core 3 is differentILookupNormalizer的签名比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