Я внедряю простую систему аутентификации с ASP.NET Core Identity, используя только имя пользователя и пароль.Когда я вызываю действие «Регистрация», я получаю сообщение об ошибке, указанное в заголовке.
Фактическая ошибка
Ниже кода, связанного с регистрацией.
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(_configuration.GetConnectionString("Default")));
services.AddIdentity<IdentityUser,
IdentityRole().AddEntityFrameworkStores<AppDbContext>();`
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
}
AccountController.cs:
public class AccountController : Controller
{
private readonly UserManager<IdentityUser> _userManager;
private readonly SignInManager<IdentityUser> _signInManager;
public AccountController(UserManager<IdentityUser> userManager,
SignInManager<IdentityUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
public IActionResult Register()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
[AllowAnonymous]
public async Task<IActionResult> Register(RegistrationViewModel registrationViewModel)
{
if (ModelState.IsValid)
{
var user = new IdentityUser {UserName = registrationViewModel.UserName};
var result = await _userManager.CreateAsync(user, registrationViewModel.Password);
if (result.Succeeded)
return RedirectToAction("Index", "Home");
var errors = result.Errors;
var message = string.Join(", ", errors);
ModelState.AddModelError("", message);
}
return View(registrationViewModel);
}
RegistrationViewModel.cs:
public class RegistrationViewModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
}
Registerm.cshtml:
@model RegistrationViewModel
<form asp-controller="Account" asp-action="Register" method="post" class="form-horizontal" role="form">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="UserName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="UserName" class="form-control" />
<span asp-validation-for="UserName" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Password" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-primary" value="Register" />
</div>
</div>
`
Насколько я знаю, такая ошибка возникает, когда логин уже связан с учетной записью, однако таблица, в которой предполагается хранить все данные пользователей, пуста.