So habe ich eine asynchrone Task-Methode, Typ T = ActionResult
, um einen neuen Benutzer in der Datenbank (DBMS = SQL Server) zu speichern. Dies war früher perfekt zu arbeiten, bevor ohne Fehler, aber ganz plötzlich sie zu brechen beginnt, wenn es zu diesem Punkt in der Ausführung bekommt:Identity versucht, die E-Mail-Eigenschaft zu duplizieren, wenn ich einen Benutzer einfüge
var result = await UserManager.CreateAsync(user, model.Password);
ich alles auf die Arbeitsversion auf Git zurückgekehrt haben aber noch kein Glück.
Was könnte das Problem sein und wie kann ich das umgehen?
Controller:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser()
{
UserName = model.UserName,
firstName = model.firstName,
lastName = model.lastName,
Email = model.email,
cellNo = model.cellNo,
DateCreated = DateTime.Now
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
//await SignInAsync(user, isPersistent: false);
// util.Log(User.Identity.GetUserId(), 5, "Account - Added a user (" + model.UserName + ") to the system");
return RedirectToAction("SuccessfullyAddedNewUser", "Users", model);
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
//Users controller action method to get redirected to once new user has been created successfully
// GET: /Users/SuccessfullyAddedNewUser
public ActionResult SuccessfullyAddedNewUser(RegisterViewModel model)
{
return View(model);
}
Modell: ApplicationUser
public class ApplicationUser : IdentityUser
{
[Required]
[StringLength(11, MinimumLength = 11)]
[Display(Name = "Cell Number")]
public string cellNo { get; set; }
[Required]
[MaxLength(50), MinLengthAttribute(3)]
[Display(Name = "First Name")]
public string firstName { get; set; }
[Display(Name = "Email Address")]
public string email { get; set; }
[Required]
[MaxLength(50), MinLengthAttribute(3)]
[Display(Name = "Last Name")]
public string lastName { get; set; }
[Display(Name = "Date Created")]
public DateTime DateCreated { get; set; }
[Required]
[DefaultValue(false)]
public Boolean MustResetPassword { get; set; }
//Concatenates the first and last name
public String getFullName()
{
return firstName + " " + lastName;
}
}
Ausnahme:
. Ausnahme: Message = „Ein Fehler ist aufgetreten, während die Einträge zu aktualisieren finden Sie in der innere Ausnahme für Details . "
Innerer Ausnahmefehler: Der Spaltenname 'email' wird mehr als einmal in der SET-Klausel oder Spaltenliste eines INSERT angegeben. Einer Spalte darf nicht mehr als ein Wert in derselben Klausel zugewiesen werden. Ändern Sie die Klausel in stellen Sie sicher, dass eine Spalte nur einmal aktualisiert wird. Wenn diese Anweisung Spalten in einer Ansicht aktualisiert oder einfügt, kann das Spalten-Aliasing die Duplizierung in Ihrem Code verbergen.
Aber wenn ich meinen Code überprüfe, gebe ich E-Mail nur einmal an.
Hinzufügen Fehler Sie gelangen zu der Frage. – User3250
hast du das Identitätspaket aktualisiert/ –
** 'es fängt an zu brechen' **. Schade, dass dies kein [mcve] ist, mit dem das Problem reproduziert werden kann. Keine Möglichkeit zu sagen, was das Problem sein könnte, basierend auf dem, was gerade gezeigt wird. – Nkosi