![](/img/trans.png)
[英]Updating user by UserManager.Update() in ASP.NET Identity 2
[英]ASP.NET Identity Update User - Nullreference
我正在尝试更新用户并获取nullreference。 这是我用于更新用户的代码,当我在else中设置名字时,我会得到nullreference(当对象不存在时,我尝试创建它,但它不起作用)
该属性可以正常工作,因为我的注册有效,并且如果用户上存在userprofile对象,也可以
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(User.Identity.GetUserId());
if (currentUser.UserProfileInfo != null)
{
currentUser.UserProfileInfo.FirstName = Firstname.Text;
currentUser.UserProfileInfo.LastName = Lastname.Text;
currentUser.UserProfileInfo.Adress = Adress.Text;
currentUser.UserProfileInfo.Zip = Zip.Text;
currentUser.UserProfileInfo.City = City.Text;
currentUser.UserProfileInfo.Mobile = Mobile.Text;
manager.UpdateAsync(currentUser);
}
else
{
UserProfileInfo UserProfileInfo = new UserProfileInfo();
currentUser.UserProfileInfo.FirstName = Firstname.Text;
currentUser.UserProfileInfo.LastName = Lastname.Text;
currentUser.UserProfileInfo.Adress = Adress.Text;
currentUser.UserProfileInfo.Zip = Zip.Text;
currentUser.UserProfileInfo.City = City.Text;
currentUser.UserProfileInfo.Mobile = Mobile.Text;
manager.UpdateAsync(currentUser);
}
谢谢
我想到了两种可能的情况。 这些信息很难说,但这是我的输入:
尝试使用User.Identity.GetUserId()时,您尚未登录。 这将为id返回一个空值,从而导致空currentUser。 您没有检查currentUser是否为null,以便在尝试访问null对象的属性时导致null引用异常。
您获得ApplicationUser对象,但未创建UserProfileInfo属性。 这可能有很多原因,具体取决于您的实现。
您应该在下一行设置断点
currentUser.UserProfileInfo.FirstName = Firstname.Text;
并检查currentUser是否为null或UserProfileInfo为null。
尝试这个:
else
{
currentUser.UserProfileInfo = new UserProfileInfo();
currentUser.UserProfileInfo.FirstName = Firstname.Text;
currentUser.UserProfileInfo.LastName = Lastname.Text;
currentUser.UserProfileInfo.Adress = Adress.Text;
currentUser.UserProfileInfo.Zip = Zip.Text;
currentUser.UserProfileInfo.City = City.Text;
currentUser.UserProfileInfo.Mobile = Mobile.Text;
manager.UpdateAsync(currentUser);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.