System.InvalidOperationException:方案已存在:Identity.Application
System.InvalidOperationException: Scheme already exists: Identity.Application
我想为用户添加自己的自定义数据,所以我按照这里的教程进行操作:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/add-user-data?view=aspnetcore-2.2&tabs=visual-studio
我已经有一个现有的应用程序,所以我无法逐行遵循该教程(我现有的应用程序已经有一个用户数据库)。当我遇到上述错误时,我并没有走得太远。我使用脚手架尝试添加
System.InvalidOperationException: 方案已经存在: Identity.Application
我已经访问了几个不同的堆栈溢出和 git 页面,例如以下页面,但无济于事
https://github.com/aspnet/AspNetCore.Docs/issues/8223(我认为最相关)
https://github.com/aspnet/Security/issues/1412
似乎很多其他人添加了两次调用身份的问题,但我在我的代码中只调用了一次。我还尝试在启动时完全注释掉该行,然后它说定义了 none 并且生我的气。我也试过切换默认值,如下所示。
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<WebApp1.Models.WebApp1Context>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc();
}
我觉得我不应该抛出异常,但是....有什么修复建议吗?
编辑:我在收到此错误之前采取了相关步骤。创建项目内容以使用脚手架进程 creation.override 中的个人用户帐户,并创建一个您可以覆盖的辅助用户模型。迁移和更新数据库 运行.
尝试将您的 IdentityUser
class 重命名为与 AspNetIdentity classes 不同的名称。然后确保您继承自 IdentityUser
例如这里是一个class
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsDisabled { get; set; }
}
这是启动
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<IdentityContext>()
.AddDefaultTokenProviders();
这个 ASP Identity Core InvalidOperationException
主要是在 Startup.cs
或项目中使用 [=15= 的任何 class 中存在对函数的重复调用时抛出] Identity Core,ASP Identity 在 Startup class:
中工作需要什么
public void ConfigureServices(IServiceCollection services)
{
_ = services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("AmpCoreDb")));
_ = services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
_ = services.AddScoped<AuthenticationStateProvider,
RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
_ = services.AddDatabaseDeveloperPageExceptionFilter();
}
标记的答案不是正确答案。我有同样的问题,原因是当添加所有身份脚手架时(通过 dotnet aspnet-codegenerator 作为 Visual Studio 崩溃),它在 areas/identity 下创建了一个 IdentityHostingStartup class。 class 复制了 startup.cs 中的身份设置。所以删除这个 class 解决了问题。
我想为用户添加自己的自定义数据,所以我按照这里的教程进行操作:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/add-user-data?view=aspnetcore-2.2&tabs=visual-studio
我已经有一个现有的应用程序,所以我无法逐行遵循该教程(我现有的应用程序已经有一个用户数据库)。当我遇到上述错误时,我并没有走得太远。我使用脚手架尝试添加
System.InvalidOperationException: 方案已经存在: Identity.Application
我已经访问了几个不同的堆栈溢出和 git 页面,例如以下页面,但无济于事
https://github.com/aspnet/AspNetCore.Docs/issues/8223(我认为最相关)
https://github.com/aspnet/Security/issues/1412
似乎很多其他人添加了两次调用身份的问题,但我在我的代码中只调用了一次。我还尝试在启动时完全注释掉该行,然后它说定义了 none 并且生我的气。我也试过切换默认值,如下所示。
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<WebApp1.Models.WebApp1Context>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc();
}
我觉得我不应该抛出异常,但是....有什么修复建议吗?
编辑:我在收到此错误之前采取了相关步骤。创建项目内容以使用脚手架进程 creation.override 中的个人用户帐户,并创建一个您可以覆盖的辅助用户模型。迁移和更新数据库 运行.
尝试将您的 IdentityUser
class 重命名为与 AspNetIdentity classes 不同的名称。然后确保您继承自 IdentityUser
例如这里是一个class
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsDisabled { get; set; }
}
这是启动
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<IdentityContext>()
.AddDefaultTokenProviders();
这个 ASP Identity Core InvalidOperationException
主要是在 Startup.cs
或项目中使用 [=15= 的任何 class 中存在对函数的重复调用时抛出] Identity Core,ASP Identity 在 Startup class:
public void ConfigureServices(IServiceCollection services)
{
_ = services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("AmpCoreDb")));
_ = services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
_ = services.AddScoped<AuthenticationStateProvider,
RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
_ = services.AddDatabaseDeveloperPageExceptionFilter();
}
标记的答案不是正确答案。我有同样的问题,原因是当添加所有身份脚手架时(通过 dotnet aspnet-codegenerator 作为 Visual Studio 崩溃),它在 areas/identity 下创建了一个 IdentityHostingStartup class。 class 复制了 startup.cs 中的身份设置。所以删除这个 class 解决了问题。