繁体   English   中英

ASP.NET身份更新用户-空引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM