System.MissingMethodException:找不到方法:'Void Microsoft.AspNetCore.Identity.DataProtectorTokenProvider

Dan*_*san 8 c# asp.net-core-3.0 .net-core-3.0

仍然在我发布DI 注册服务类型 .net core 3.0 的同一个项目上。现在当这个问题被修复时,我收到了新的错误。现在我的代码看起来:

    services.AddDbContext<ApplicationIdentityDbContext>(options =>
        options.UseSqlServer(configuration.GetConnectionString("Default")));

    services.AddIdentityCore<ApplicationUser>(options =>
        {
            options.Password.RequireDigit = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequiredLength = 4;

            options.SignIn.RequireConfirmedEmail = true;
            options.Tokens.ProviderMap.Add("CustomEmailConfirmation",
                new TokenProviderDescriptor(
                    typeof(CustomEmailConfirmationTokenProvider<IdentityUser>)));

            options.Tokens.EmailConfirmationTokenProvider = "CustomEmailConfirmation";

        })
        .AddEntityFrameworkStores<ApplicationIdentityDbContext>();

    services.AddTransient(o =>
    {
        var service = new CustomEmailConfirmationTokenProvider<IdentityUser>(o.GetService<IDataProtectionProvider>(), o.GetService<IOptions<DataProtectionTokenProviderOptions>>(), o.GetService<ILogger<DataProtectorTokenProvider<IdentityUser>>>());

        return service;
    });
Run Code Online (Sandbox Code Playgroud)

错误是:

System.MissingMethodException: 方法未找到:'Void Microsoft.AspNetCore.Identity.DataProtectorTokenProvider 1..ctor(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider, Microsoft.Extensions.Options.IOptions1)'。

zhu*_*ber 6

我遇到了同样的问题,问题与软件包本身有关。

基本上,问题是许多这些Microsoft.AspNetCore.*包现在已移至Microsoft.AspNetCore.App框架,因此您删除Microsoft.AspNetCore.Identity引用并将其添加到您的项目中:

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我注意到我的构造函数(与您的构造函数相同)缺少附加参数ILogger<DataProtectorTokenProvider<TUser>>,您可以在此链接的 .NET Core 3.* 版本中看到该参数。