c# - 如何在 Identity 2 中将 Id 属性从字符串转换为 int

标签 c# asp.net-mvc asp.net-identity

我正在使用 ASP.NET MVC 5/实体 6 框架和代码优先方法在 c# 中构建应用程序。我正在尝试将身份 2 中的 Id 属性从 string 更改为 integer

我关注了 documentation这似乎很简单。

然后我使用以下命令创建迁移

Add-Migration InitialCreate

由于某种原因,迁移文件中不包含 AspNet 表。但是,然后我使用以下命令进行了迁移

Update-Database

迁移已顺利执行,播种机运行良好。

但是,当我运行应用程序时

出现以下错误

Exception Details: System.FormatException: Input string was not in a correct format.

错误突出显示 Startup.Auth.cs 文件中的第 38 行。

Line 36: regenerateIdentityCallback: (manager, user) =>
Line 37: user.GenerateUserIdentityAsync(manager),
Line 38: getUserIdCallback: (id) => (id.GetUserId<int>()))

我该如何修复这个错误?

最佳答案

您需要删除您的 cookie。一个快速测试是使用不同的浏览器打开您的应用程序(还没有 cookie,可能使用 IE 或 Edge)。

这是因为当您第一次浏览该站点时,会创建一个 cookie(使用主键的字符串版本)。

当您将主键更改为 int 时,浏览器中的 cookie 仍在使用字符串版本,因此您将得到 Exception Details: System.FormatException: Input string was not in a correct format. 错误。

我曾经被这个错误困扰过一次,因此我记得我必须做些什么来修复它,这里有一个链接以获取更多信息:https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys/issues/2

关于c# - 如何在 Identity 2 中将 Id 属性从字符串转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716319/

相关文章:

c# - 我应该共享使用公共(public)字段的对象的 UI 吗?

c# - ASP.NET c# 将参数值传递给 Crystal 报表

c# - 查找名称为LINQ的最低价格返回的产品

c# - 将模型集合中的一项发布到 MVC 中的 Controller 方法

javascript - 处理 jquery ajax 错误

asp.net-mvc-5 - MVC 5 标识和错误消息

asp.net-mvc - 用户个人资料图片 asp.net mvc 身份

c# - 服务器模式 SSL 必须使用具有关联私钥的证书 - 在 TLS 握手期间

c# - 项目构建但无法发布

asp.net-mvc - 如何在 MVC5 应用程序中使用 Asp.Identity 从用户的谷歌帐户中获取名字 + 姓氏