- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚将我的 MVC 5 应用程序(以前是带有 SimpleMembership
的 MVC 3)升级到 ASP.NET Identity 2.0,我可以使用现有用户,但是当我执行以下命令创建新用户时:
var user = new ApplicationUser();
//user.Id = db.Users.Max(u => u.Id) + 1; //does not help
user.UserName = model.UserName;
user.Email = model.EMailAddress;
var result = await UserManager.CreateAsync(user, model.Password);
我得到以下信息:
System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'Id', table 'MyDB.dbo.AspNetUsers'; column does not allow nulls. INSERT fails. The statement has been terminated.
有人知道为什么会这样吗?
这是我的 UserManager
:
var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<MyDbContext>()));
manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
manager.EmailService = new EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, int>(dataProtectionProvider.Create("ASP.NET Identity"));
}
我为用户和角色使用 int
键,但我之前有默认的 string
-keys 并且 Id
也没有填充,我得到了类似的错误。
最佳答案
我发现了问题:
因为我将 key 从 string
更改为 int
,所以创建了以下迁移:
AlterColumn("dbo.AspNetUsers", "Id", c => c.Int(nullable: false, identity: true));
在那里它正确生成了 identity: true
,但是 MSSQL 无法将现有列转换为标识列 => 该列变成了“普通 INT
列”。
Identity 必须假定该列是一个标识列并插入 null
作为键并期望 DB 生成 id => 异常。
解决方案是从旧备份恢复到我的 SimpleMembership
数据库,并使用 int
将其直接转换为 ASP.NET Identity
- 创建 AspNetUsers
表时的键。
P.S.: 但我仍然不知道为什么我在使用 string
-keys 时遇到了类似的问题,但无论如何我更喜欢 int
-keys...
关于c# - UserManager.CreateAsync 不生成 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272478/
我有以下使用 CreateAsync 方法创建新用户的简单代码。该代码不会抛出任何错误,但也不会更新数据库。我在 IdentityResult result 行上添加了一个断点,在该行停止,在 if
我正在尝试使用新的 Asp.Net Identity 系统。我在 asp.net 网站上搜索过这个并且能够找到一个教程 here . 我已经为它创建了 Register 操作和适当的 View 。但是
文档说它将“创建一个新的处理程序,其发布的消息和可运行对象不受显示垂直同步等同步障碍的影响。” 这是什么意思?什么时候应该使用 createAsync()? 最佳答案 我的理解是,这是一个不等待显示
尝试使用 UserManager CreateAsync 方法创建新用户时出现以下错误。我使用的是未修改的 IdentityUser 和 IdentityRole。我有一些 DBSets,它们填充了数
我有这个 ReactiveCommand; LoadFileCommand = ReactiveCommand.CreateAsyncTask((_, cancellationToken) => Lo
我刚刚将我的 MVC 5 应用程序(以前是带有 SimpleMembership 的 MVC 3)升级到 ASP.NET Identity 2.0,我可以使用现有用户,但是当我执行以下命令创建新用户时
情况 我有一个我更新的工作程序需要更新身份/登录方法。所以我从 Identity 1 更新到 version2 并且我一直在修复错误,但我现在很困惑。 这是我的注册码 public async Tas
使用 asp.net mvc5,我的用户管理系统似乎可以正常工作。我可以使用 google 或名称/密码登录。 但现在我正在开发一个用户管理界面,我需要能够在其中删除现有用户。这开始让我明白用户管理系
我有这个 Seeder 类,它在 Configure 方法的 Startup.cs 文件的末尾被调用: public class UserSeeder { private readonly A
我已经用额外的地址列修改了 AspNetUsers 表,并遵循了这些步骤 here除了迁移部分。我使用数据库优先方法开始我的项目 我的身份模型有额外的字段 public class Applicati
几天前,我发现了 Ben Foster 撰写的关于 MVC、Identity 和 OWIN 的非常好的教程。教程是here 我刚刚完成本教程,但在尝试覆盖函数“CreateAsync”时发现了一个问题
我正在尝试使用以下函数以编程方式将用户添加到我的 ASP.Net MVC 5.0 应用程序中的 AspNetUsers 表: private async Task AddUser(DataImport
我正在尝试对 IUserStore 进行非常简单的实现这本质上是: 使用 NHibernate 将用户保存在一个表中(无声明/登录) 将角色名称存储在同一个表中的 nvarchar 列中(管道 ( '
我现在真的很困惑。因此,我一直在开发 Web API 并对项目进行单元测试,并且最近对许多 Controller 进行了更改,但完全保持 AccountController 不变。在我的 Accoun
UserManager.CreateAsync Method (TUser, String)没有提到错误。 在 Controller 中,我只是编辑如下内容: public async Task Re
在 Auth0 的在线管理 API 中,我可以使用此主体创建用户。但不知何故,CreateAsync 无法正常工作。 private async Task CreateUserAuth0()
我有以下注册方法,我发誓我(手动)测试了一段时间并注意到如果用户名已经存在,结果只是 result.Succeeded 的错误值并将错误消息附加到ModelState(使用内置的 AddErrors(
致力于 .Net Core 项目并创建了以下服务以跨页面共享通用方法。 namespace MyApp.Tests.Services { public class UserServiceTes
我们正在尝试在 ASP.Net 5 项目中使用 Microsoft 帐户身份验证。我们不需要本地身份验证,也不需要用户名。 在 Web 应用程序的 ASP.Net 5 模板中,使用外部提供商登录后,控
我正在尝试测试我的帐户 Controller 的故障情况。当我在 Debug模式下运行测试时,我没有看到预期的结果。我期望在到达创建用户异步的代码行时返回失败的身份结果。但是,在 Debug模式下,它
我是一名优秀的程序员,十分优秀!