Asp.net SqlException:无效的列名';规范化名称';。无效的列名';并发amp';。无效的列名';规范化名称';
为什么在.NET Core Identity上使用PasswordSignInAsync时出现异常<代码>Microsoft.AspNetCore.IdentityAsp.net SqlException:无效的列名';规范化名称';。无效的列名';并发amp';。无效的列名';规范化名称';,asp.net,asp.net-core,asp.net-identity,Asp.net,Asp.net Core,Asp.net Identity,为什么在.NET Core Identity上使用PasswordSignInAsync时出现异常Microsoft.AspNetCore.Identity await _signInManager.PasswordSignInAsync(user.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: false); An unhandled exception occurred while processing the r
await _signInManager.PasswordSignInAsync(user.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: false);
An unhandled exception occurred while processing the request.
SqlException: Invalid column name 'NormalizedName'.
Invalid column name 'ConcurrencyStamp'.
Invalid column name 'NormalizedName'.
Microsoft.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__164_0(Task<SqlDataReader> result)
异常实际上来自
AspNetRoles
表,而不是AspNetUsers
表。如果已将旧的Asp.NetIdentity
迁移到Asp.Net Core,则需要向角色表中添加两个新字段。这里有一个迁移:
公共部分类标识:迁移
{
受保护的覆盖作废(MigrationBuilder MigrationBuilder)
{
migrationBuilder.AddColumn(
名称:“NormalizedName”,
表:“AspNetRoles”,
类型:“nvarchar(256)”,
最大长度:256,
可为空:真);
migrationBuilder.AddColumn(
名称:“ConcurrencyStamp”,
表:“AspNetRoles”,
类型:“nvarchar(最大)”,
可为空:真);
}
受保护的覆盖无效关闭(MigrationBuilder MigrationBuilder)
{
migrationBuilder.DropColumn(
名称:“ConcurrencyStamp”,
表:“AspNetRoles”);
migrationBuilder.DropColumn(
名称:“NormalizedName”,
表:“AspNetRoles”);
}
}
如果您想要完整的
Identity
迁移,包括用户、声明和其他表,您可以参考我对这个问题的回答:不确定这是如何实现的,但我通过在Startup.cs`services.AddIdentity(options=>{options.SignIn.RequireConfirmedAccount=true;}中进行这些更改来实现).AddEntityFrameworkStores();`到`services.AddDefaultIdentity(options=>options.SignIn.RequireConfirmedAccount=true).AddEntityFrameworkStores()`
select LockoutEnd, TwoFactorEnabled, PhoneNumberConfirmed, PhoneNumber, ConcurrencyStamp, SecurityStamp,
PasswordHash, EmailConfirmed, NormalizedEmail, Email, NormalizedUserName, UserName, Id, LockoutEnabled, AccessFailedCount
from [dbo].[AspNetUsers]