在 ASP.NET Core API 中使用身份的问题 [已解决]

问题描述

下午好,我正在尝试在我的 API 中使用 Identity,但我有一些错误,我认为是依赖注入。

我做了所有必要的配置,与数据库连接,生成了迁移,但是当我尝试在我的控制器中从 Microsoft.AspNetCore.Identity 作为类 SignInManager 和 UserManager 注入时,我在 Startup 中出现了 ArgumentNullException 错误,以及下图。

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 (将#修改为@)