AddIdentity()失败“ InvalidOperationException:方案已经存在:Identity.Application”

Cow*_*org 8 asp.net-identity asp.net-core-2.0

我试图将Facebook登录名添加到我的.NET Core 2.1站点

我遵循,指南以及更具体的内容(针对Facebook登录)

将以下行添加到startup.cs之后,在ConfigureServices-method内部

 public void ConfigureServices(IServiceCollection services)
 {
    ...
    services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
    ...
 }
Run Code Online (Sandbox Code Playgroud)

我在运行应用程序时收到错误消息。没有这些行,它将“正常”运行。用户可以登录到Facebook并批准我的申请,然后我收到电子邮件,但没有收到。但是我猜测用户信息不会被添加到我的数据库中

InvalidOperationException:方案已经存在:Identity.Application Microsoft.AspNetCore.Authentication.AuthenticationOptions.AddScheme(字符串名称,操作configureBuilder)...

该代码超过了添加的行,并且不久(启动期间)后出现错误。我已经在我的项目中进行了搜索(从模板中只是一个裸露的.NET Core 2.1 Web应用程序),但是看不到“ AddIdentity”的任何其他用法。

我确实找到了“ AddDEfaultIdentity()”,将该行注释掉了。但是后来我得到了

InvalidOperationException:没有 注册类型为 'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]'的服务。Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider提供程序,类型为serviceType)

Tid*_*idy 9

我有一个类似的问题。这对使用.Net Core 3.0的人可能更有用。深入研究后,我发现一旦您使用脚手架创建“身份”区域。在Identity文件夹内创建一个名为“ IdentityHostingStartup.cs”的文件。

IdentityHostingStartup位置

在类内部,将创建“ AddDefaultIdentity”的另一个实例以及一些其他服务。

IdentityHostingStartup文件视图

如果从“ Startup.cs”中删除“ addDefaultIdentity”,则应启动您的应用。另外,如果收到空连接字符串错误。更新IdentityHostintgStartup.cs内部的连接字符串

注意:删除两个addDefaultIdentities都可以。您不能在两个地方都拥有它。

希望这可以帮助。

  • 如果您使用的是 .Net Core 3.0 这就是解决方案。 (6认同)
  • 这才是真正的解决方案 (2认同)

Mat*_*sso 9

在.Net 6下,转到program.cs并注释重复的connectionString、AddDbContext和AddDefaultIdentity:

var builder = WebApplication.CreateBuilder(args);
//var connectionString = builder.Configuration.GetConnectionString("ApplicationDbContextConnection") ?? throw new InvalidOperationException("Connection string 'ApplicationDbContextConnection' not found.");

//builder.Services.AddDbContext<ApplicationDbContext>(options =>
//    options.UseSqlServer(connectionString));;

//builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
//    .AddEntityFrameworkStores<ApplicationDbContext>();;

// Add services to the container.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
builder.Services.AddSingleton<WeatherForecastService>();

var app = builder.Build();
Run Code Online (Sandbox Code Playgroud)


Ham*_*hdi 6

我也有同样的问题。

services.AddIdentity<ApplicationUser, ApplicationRole>()在 2 个地方发现了这一点。

我删除了其中一个,现在一切都按预期进行。


归档时间:

查看次数:

5974 次

最近记录:

5 年,11 月 前