Blazor报错“scheme already exists: addidentities”排查求助
解决Blazor中“scheme already exists: addidentities”错误
问题出在你同时配置了AddAuthentication().AddIdentityCookies()和AddIdentity<ApplicationUser, IdentityRole>()——这两个操作都会注册Identity相关的认证Scheme,导致重复冲突。AddIdentity内部已经自动完成了认证Cookie方案的配置,不需要再单独调用AddIdentityCookies。
修正后的启动代码如下:
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Swamp.Components; using Swamp.Components.Account; using Swamp.Data; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); builder.Services.AddCascadingAuthenticationState(); builder.Services.AddScoped<IdentityUserAccessor>(); builder.Services.AddScoped<IdentityRedirectManager>(); builder.Services.AddScoped<AuthenticationStateProvider, IdentityRevalidatingAuthenticationStateProvider>(); var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); builder.Services.AddDbContextFactory<ApplicationDbContext>(options => options.UseSqlServer(connectionString)); builder.Services.AddQuickGridEntityFrameworkAdapter(); // 移除重复的AddAuthentication配置,AddIdentity会自动处理认证方案 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString)); builder.Services.AddDatabaseDeveloperPageExceptionFilter(); builder.Services.AddIdentity<ApplicationUser, IdentityRole>() .AddUserManager<UserManagerExtension>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddSignInManager() .AddDefaultTokenProviders(); builder.Services.AddServerSideBlazor().AddCircuitOptions(x => x.DetailedErrors = true); builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseMigrationsEndPoint(); } else { app.UseExceptionHandler("/Error", createScopeForErrors: true); app.UseHsts(); app.UseMigrationsEndPoint(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseAntiforgery(); app.MapRazorComponents<App>() .AddInteractiveServerRenderMode(); // Add additional endpoints required by the Identity /Account Razor components. app.MapAdditionalIdentityEndpoints(); app.Run();
注:代码中重复调用的AddQuickGridEntityFrameworkAdapter()可以保留一处,减少冗余配置。
内容的提问来源于stack exchange,提问作者rose-marie paradis
相关产品推荐
相关产品推荐

