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)
我有一个类似的问题。这对使用.Net Core 3.0的人可能更有用。深入研究后,我发现一旦您使用脚手架创建“身份”区域。在Identity文件夹内创建一个名为“ IdentityHostingStartup.cs”的文件。
在类内部,将创建“ AddDefaultIdentity”的另一个实例以及一些其他服务。
如果从“ Startup.cs”中删除“ addDefaultIdentity”,则应启动您的应用。另外,如果收到空连接字符串错误。更新IdentityHostintgStartup.cs内部的连接字符串
注意:删除两个addDefaultIdentities都可以。您不能在两个地方都拥有它。
希望这可以帮助。
在.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)
我也有同样的问题。
我services.AddIdentity<ApplicationUser, ApplicationRole>()
在 2 个地方发现了这一点。
我删除了其中一个,现在一切都按预期进行。
归档时间: |
|
查看次数: |
5974 次 |
最近记录: |