c# - System.MissingMethodException : Method not found: 'Void Microsoft. AspNetCore.Identity.DataProtectorTokenProvider

标签 c# asp.net-core-3.0 .net-core-3.0

仍然在我遇到问题的同一个项目 DI Registration service type .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;
    });

错误是:

System.MissingMethodException: Method not found: 'Void Microsoft.AspNetCore.Identity.DataProtectorTokenProvider1..ctor(Microsoft.AspNetCore.DataProtection.IDataProtectionProvider, Microsoft.Extensions.Options.IOptions1)'.

最佳答案

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

基本上问题在于其中许多 Microsoft.AspNetCore.*软件包现在移至 Microsoft.AspNetCore.App框架,所以你删除你的 Microsoft.AspNetCore.Identity引用并将其添加到您的项目中:

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

我注意到我的构造函数(和你的一样)缺少附加参数 ILogger<DataProtectorTokenProvider<TUser>> ,您可以在此 link. 上的 .NET Core 3.* 版本中看到

关于c# - System.MissingMethodException : Method not found: 'Void Microsoft. AspNetCore.Identity.DataProtectorTokenProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58973703/

相关文章:

c# - C# 库是否有 OnLoad 事件?

c# - 在 ASP.NET Core WebApplicationFactory 中覆盖 EF Core DbContext

c# - 如何将类字段与 System.Text.Json.JsonSerializer 一起使用?

c# - JsonConverter 等效于使用 System.Text.Json

c# - 无法将 c# .Net Core 3.0 与 directx 9.0 依赖项链接起来

c# - 'private extern String PadHelper'的源代码在哪里

c# - Runtime.Caching.MemoryCache 在将许多项目添加到缓存时抛出 OutOfMemoryException

c# - 在代码中设置 facebook 应用程序 web.config 设置 (C#)

asp.net-core - ASP.NET Core 3 Razor 页面 DataAnnotation Compare 属性返回 "Could not find a property named <n>"

.net - ASP.NET Core 3.0 端点路由和自定义中间件