【发布时间】:2022-07-04 02:26:37
【问题描述】:
我正在尝试在我的 razor pages 应用程序上使用 asp.net 身份。默认实现使用带有实体框架的sql。
我正在尝试使用 cosmos db (sql api) 进行存储。我在program.cs中修改了如下代码。
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseCosmos("https://end-point/", "key", "db-name")
);
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
在 ApplicationDbContext 类中,OnModelCreating 被覆盖如下:
builder.Entity<IdentityUser>(model =>
{
model.ToContainer("container-name").HasNoDiscriminator();
model.HasPartitionKey(nameof(IdentityUser.Id));
model.Property(p => p.ConcurrencyStamp).IsETagConcurrency();
});
通过这些更改,在运行应用程序时,它会构建。它还使用给定的用户名和密码进行注册。点击注册按钮,它会显示电子邮件确认链接。
此时,用户未登录。点击确认链接后,显示确认成功,但用户仍然未登录。
在验证 cosmos db 容器时,会创建用户并将其存储在 db 中。
我想看看它是否能让我使用我用来注册的相同凭据登录,因为用户存在于 db 中。
但是会报错
CosmosException:响应状态码不表示成功:NotFound(404);子状态:0;
我不会更改任何 IdentityUser 类或 UserStore 类。
感谢所有帮助指出它为什么会引发 NotFound 错误以及为什么它没有让我登录以及如何解决。
【问题讨论】:
标签: c# azure-cosmosdb identity .net-6.0