System.NullReferenceException: '未将对象引用设置到对象的实例。'

刚学不久,自己写一个小项目,出现了这个异常
不知道是不是Session["UserId"]引起的
上网搜到一些解决方法试了试还是不成功
想请大家帮忙看一看

Controller下的ActionResult
//Update Picture
[HttpPost]
public ActionResult UpdatePicture(PictureVM obj)
{
int userId = Convert.ToInt32(Session["UserId"]);
if (userId == 0)
{
return RedirectToAction("Login", "Account");
}

        var file = obj.Picture;
        User u = db.Users.Find(userId);
        if( file != null)
        {
            //update the img
            var extension = Path.GetExtension(file.FileName);
            string id_and_extension = userId + extension;
            string imgUrl = "~/Profile_Images/" + id_and_extension;
            u.ImageUrl = imgUrl;
            db.Entry(u).State = EntityState.Modified; //*
            db.SaveChanges();

            var path = Server.MapPath("~/Profile_Images/");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path + id_and_extension);
            }
            //when update new img, delete old img
            if ((System.IO.File.Exists(path + id_and_extension))) //imgUrl
            {
                System.IO.File.Delete(path + id_and_extension);
            }
            file.SaveAs((path + id_and_extension));
        }
        return RedirectToAction("UserProfile");
    }
UserProfile.cshtml下关于ImageUrl的部分
        <dt>
            @Html.DisplayNameFor(model => model.ImageUrl)
        </dt>
        <dd style="margin-top:15px">
            @*@if(Model.ImageUrl.Length > 0)*@
            @*System.NullReferenceException: '未将对象引用设置到对象的实例。'
            ClairG.ChatApp.Domain.Entities.User.ImageUrl.get returned null.*@
            @if (Model.ImageUrl != null)  //无法保存图片
            {
                <img src="@Url.Content(Model.ImageUrl)" alt="No Image" style="height:200px" class="img-responsive img-circle" />
            }
            <br /><br />
            @using (Html.BeginForm("UpdatePicture", "User", FormMethod.Post,
                new { enctype = "multipart/form-data" }))
            {
                <input type="file" name="Picture class=" col-sm-2 form-control"" />
                <input type="submit" value="Save Image" class="btn btn-default" />
            }
        </dd>

3个回答

User u = db.Users.Find(userId);
看下这个是不是空的

lemonmon0111
宁檬檬 谢谢,设置断点跑了一遍成功了,可能是缓存的问题。。。
一年多之前 回复

要调试的方式运行(F5)或者选择调试菜单-启动。
然后找到报错的行,再看具体是什么变量NULL了。

lemonmon0111
宁檬檬 设置断点,没有修改代码,跑了一遍成功了。。。
一年多之前 回复
    var file = obj.Picture;
    User u = db.Users.Find(userId);

            看obj是不是null, 或者看db.Users是不是null
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐