如何在身份2中将Id属性从字符串转换为int

时间:2016-06-09 03:33:30

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

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

我跟着documentation,似乎很直接。

然后我使用以下命令

创建迁移
Add-Migration InitialCreate

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

Update-Database

执行迁移没有任何问题,播种机运行良好。

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

我收到以下错误

  

异常详细信息:System.FormatException:输入字符串不在   格式正确。

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

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

如何解决此错误?

1 个答案:

答案 0 :(得分:5)

您需要删除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