整个项目带回“对象集' ApplicationUsers'和'用户'都可以包含“

时间:2016-02-05 07:34:58

标签: asp.net-mvc asp.net-mvc-5

好的,不太确定我搞砸了哪里。

  • MVC 5
  • DotNet 4.5.2
  • BrockAllen IdentityReboot扩展的身份2
  • 一堆其他的狗屎。

所以我将Regions表绑定到Users表(AspNetUsers),并且因为Identity自带了所有已经支持的东西,我试图建立一个新的“页面”来处理为用户分配区域。嗯,我认为这是第一个错误。

我从ApplicationUser Model类(AFAIR)创建了一个Controller和所有相关的剃刀视图。试图访问该页面给了我标题中的错误。我无能为力似乎解决了这个问题。所以我最终删除了控制器和剃刀视图。问题是,就登录内容而言,现在我的整个网站都会抛出相同的错误。

是的,所以我在五天内就有了可交付成果,而且我认为我只是把整个项目都给了我。我可以访问登录前的页面,但登录后的任何内容,包括登录验证,都会使用相同的消息。

例如,尝试登录将产生以下内容:

Multiple object sets per type are not supported. The object sets 'ApplicationUsers' and 'Users' can both contain instances of type 'CCS.Models.ApplicationUser'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Multiple object sets per type are not supported. The object sets 'ApplicationUsers' and 'Users' can both contain instances of type 'CCS.Models.ApplicationUser'.

Source Error: 


Line 61:       // To enable password failures to trigger lockout, change to shouldLockout: true
Line 62:       //var user = await UserManager.FindByEmailAsync(model.Email);
Line 63:       var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
Line 64:       switch(result) {
Line 65:    case SignInStatus.Success:

Source File: D:\WebDevelopment\CCS\CCS\Controllers\AccountController.cs    Line: 63 

哦不!我甚至无法登录该应用程序。不,我不记得在单个生成的控制器和剃刀视图之外更改任何内容。一切都突然变坏了。我应该以其他方式删除控制器和剃刀视图吗?我也关闭了VS 2015并重新启动它,没有任何变化。地狱,甚至VS控制台都在抛出错误。

请询问您可能需要查看的任何代码。

1 个答案:

答案 0 :(得分:0)

哦,FFS。事实证明,答案是staring me in the face整个晚上。

对于那些追随我的人的有用提示:转到IdentityModel.csCTRL+F自己上搜索字段,然后输入DbSet作为搜索字词。如果您使用的是VS 2015(并假设默认设置),右侧的滚动条将在DbSet点击时显示橙色油漆。

一组点(可能是连续的)将是您手动创建的实际模型。但是脚手架会自动生成一个或多个异常值,并且看起来与其他异常值大不相同。

例如,我手动创建的条目如下所示:

public DbSet<Province> Province { get; set; }

但是自动生成的条目(需要删除/注释掉)看起来像这样:

public System.Data.Entity.DbSet<CCS.Models.ApplicationUser> ApplicationUsers { get; set; }

是的,差别很大。难怪我以前看不到它。我只是没有意识到我在看什么。另外,如果你的public class ApplicationDbContext充满了很多东西,那么底部会显示 waaaayyyyy 。它是在该类的最后创建的。

欢喜被提。