#c# #asp.net-core #asp.net-identity #identity
#c# #asp.net-ядро #asp.net-идентификатор #идентификация
Вопрос:
Добрый день, я пытаюсь использовать Identity в своем API, но у меня есть некоторая ошибка, которая, как я полагаю, связана с внедрением зависимостей.
Я выполнил всю необходимую настройку, подключился к базе данных, сгенерировал миграции, но когда я пытаюсь внедрить в качестве классов SignInManager и UserManager от Microsoft.AspNetCore.Идентификатор в моем контроллере, я получаю ошибку 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.