我有一个较旧的asp.net core身份验证数据库,希望将一个新项目(Web API)映射到该数据库。
仅为了测试,我复制了先前项目中的Models文件夹和ApplicationUser文件(ApplicationUser仅从IdentityUser继承,没有任何更改) - 做DB first似乎不是一个好主意。
我在ConfigureServices中注册Identity(但我没有将其添加到管道中,因为我的唯一意图是使用UserStore)
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
我的期望是现在
UserManager<ApplicationUser>
应该自动注入到构造函数中。
但是,当将以下代码添加到控制器时 private UserManager _userManager;
public UserController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
每次调用API都以异常结束:
HttpRequestException:响应状态代码不表示成功:500(内部服务器错误)。
移除“注入”代码会导致顺利运行的Web API可以接受请求。
由于这是在我的任何代码被执行之前发生的,因此很难进行调试。您有任何想法为什么会发生这种情况吗?
附言:启用了异常设置窗口中的所有异常后,我得到了以下异常:
异常抛出:'System.InvalidOperationException' in
Microsoft.Extensions.DependencyInjection.dll附加信息:无法解析类型为“Namespace.Data.ApplicationDbContext”的服务, 同时尝试激活 “Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4[Namespace.Models. ApplicationUser,Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole,Namespace.Data.ApplicationDbContext,System.String]”。