Проблема с использованием идентификатора в ASP.NET Основной API [РЕШЕН]

#c# #asp.net-core #asp.net-identity #identity

#c# #asp.net-ядро #asp.net-идентификатор #идентификация

Вопрос:

Добрый день, я пытаюсь использовать Identity в своем API, но у меня есть некоторая ошибка, которая, как я полагаю, связана с внедрением зависимостей.

Я выполнил всю необходимую настройку, подключился к базе данных, сгенерировал миграции, но когда я пытаюсь внедрить в качестве классов SignInManager и UserManager от Microsoft.AspNetCore.Идентификатор в моем контроллере, я получаю ошибку ArgumentNullException при запуске, а также изображение ниже.

Исключение ArgumentNullException

Ошибка понимания того, что приложение не может получить доступ к строке в настройках приложений, однако для применения миграций работает.

Если я удалю 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";
    }
  }
}
 

[РЕДАКТИРОВАТЬ]: Если передать строку прямого подключения, это приведет к той же проблеме, например: параметры.UseSqlServer(«Сервер = (localdb) …»)

[EDIT2]: Я обнаружил проблему, ошибка возникает только при использовании отладчика vscode, вероятно, это просто конфигурация launch.json.

Комментарии:

1. Убедитесь, что конфигурация, зависящая от вашей среды, включает строку подключения или что ваша среда указывает на конфигурационный файл с этой строкой подключения.

2. Пожалуйста, проверьте значение configuration.GetConnectionString("DefaultConnection") времени выполнения

3. Откуда берется ваш объект конфигурации? Вы инициализируете его в своем конструкторе запуска?

4. Если передать строку прямого подключения, возникает та же проблема, например: параметры. Использует Sql Server(«Server= (localdb) …»).

5. Я обнаружил проблему, ошибка возникает только при использовании отладчика vscode, вероятно, это просто конфигурация launch.json.