问题描述
下午好,我正在尝试在我的 API 中使用 Identity,但我有一些错误,我认为是依赖注入。
我做了所有必要的配置,与数据库连接,生成了迁移,但是当我尝试在我的控制器中从 Microsoft.AspNetCore.Identity 作为类 SignInManager 和 UserManager 注入时,我在 Startup 中出现了 ArgumentNullException 错误,以及下图。
理解应用程序无法访问 appsettings 中的字符串的错误,但应用迁移工作正常。
如果我从控制器中删除 SignInManager 和 UserManager,错误就会停止。以下实现:
启动:
services.AddDbContext<AppDbContext>(options =>
options.UsesqlServer(configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser,IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
AppDbContext:
namespace Identity.API.Data
{
public class AppDbContext : IdentityDbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) :
base(options) {}
}
}
应用设置:
{
"ConnectionStrings": {
"DefaultConnection":
"Server= (localdb)\\mssqllocaldb;Database=MyDb;
Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
控制器:
namespace Identity.API.Controllers
{
[ApiController]
[Route("auth")]
public class AuthController : Controller
{
public readonly SignInManager<IdentityUser> SignInManager;
public readonly UserManager<IdentityUser> UserManager;
public AuthController(
SignInManager<IdentityUser> signInManager,UserManager<IdentityUser> userManager)
{
SignInManager = signInManager;
UserManager = userManager;
}
[HttpGet]
public string Get()
{
return "IT WORKS";
}
}
}
[编辑]:如果通过直接连接字符串,也会出现同样的问题,例如:options.UsesqlServer("Server= (localdb)...")
[EDIT2]:我发现了问题,错误只在使用 vscode 调试器时发生,可能只是 launch.json 配置。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)