【发布时间】:2022-01-12 22:16:17
【问题描述】:
我有一个较旧的 asp.net 核心身份数据库,我想将一个新项目(一个 web api)映射到它。
为了测试,我从上一个项目中复制了 Models 文件夹和 ApplicationUser 文件(ApplicationUser 只是继承自 IdentityUser,没有任何更改)——首先做 DB 似乎是个坏主意。
我正在 ConfigureServices 中注册身份(但我没有将其添加到管道中,因为我唯一的目的是使用 UserStore)
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
我的期望是现在
UserManager<ApplicationUser>
...应该自动注入到构造函数中。
但是,当将以下代码添加到控制器时 私有用户管理器_userManager;
public UserController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
... 对 api 的每次调用都以异常结束: HttpRequestException:响应状态码不表示成功:500(内部服务器错误)。
删除“注入”代码会导致可以接受请求的 Web api 顺利运行。
很难调试,因为这发生在我的任何代码到达之前。知道为什么会这样吗?
附:从“异常设置”窗口启用所有异常后,我得到了这个:
抛出异常:
中的“System.InvalidOperationException” Microsoft.Extensions.DependencyInjection.dll附加信息:无法解析服务类型 'Namespace.Data.ApplicationDbContext' 尝试激活时 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4 [命名空间.模型。 ApplicationUser,Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole,Namespace.Data.ApplicationDbContext,System.String]'。
【问题讨论】:
-
添加完整服务器错误
-
当我遇到这个错误时,问题是我的 ApplicationDbContext 不是从 IdentityDbContext
派生的。它只是从没有通用类型 ApplicationUser 的 IdentityDbContext 派生而来的。
标签: c# asp.net-web-api asp.net-core asp.net-identity asp.net-core-mvc