我在第146行继续收到此错误。我很感激有人向我解释此错误。
对象引用未设置为对象的实例。
说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
来源错误:
Line 144: var courses = dc.Courses.ToList().
Line 145: Where(course =>
Line 146: course. <------??????
Line 147: User.
Line 148: Id ==
Line 149: currentUserId);
源文件:c:\ aaa \ vat \ c#\ proj \ igoryen \ igoryen \ ViewModels \ Repo_Course.cs行:146
堆栈跟踪:
[NullReferenceException: Object reference not set to an instance of an object.]
igoryen.ViewModels.<>c__DisplayClassb.<getListOfCourseBaseAM>b__a(Course course) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:146
System.Linq.WhereListIterator`1.MoveNext() +56
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +381
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
AutoMapper.Mappers.EnumerableMapperBase`1.Map(ResolutionContext context, IMappingEngineRunner mapper) +273
AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context) +838
[AutoMapperMappingException:
Mapping types:
WhereListIterator`1 -> IEnumerable`1
System.Linq.Enumerable+WhereListIterator`1[[igoryen.Models.Course, igoryen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.IEnumerable`1[[igoryen.ViewModels.CourseBase, igoryen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
Destination path:
IEnumerable`1
Source value:
System.Linq.Enumerable+WhereListIterator`1[igoryen.Models.Course]]
AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context) +936
AutoMapper.MappingEngine.Map(Object source, Type sourceType, Type destinationType, Action`1 opts) +196
AutoMapper.MappingEngine.Map(Object source, Action`1 opts) +172
AutoMapper.MappingEngine.Map(Object source) +121
AutoMapper.Mapper.Map(Object source) +107
igoryen.ViewModels.Repo_Course.getListOfCourseBaseAM(String currentUserId) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:151
igoryen.ViewModels.Repo_Course.getSelectListOfCourse(String currentUserId) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:136
igoryen.Controllers.CancellationsController.Create() in c:\aaa\vat\c#\proj\igoryen\igoryen\Controllers\CancellationsController.cs:50
lambda_method(Closure , ControllerBase , Object[] ) +101
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60
System.Web.Mvc.Async.ActionInvocation.InvokeSynchronousActionMethod() +76
System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +36
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +73
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3c() +117
System.Web.Mvc.Async.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() +323
System.Web.Mvc.Async.<>c__DisplayClass30.<BeginInvokeActionMethodWithFilters>b__2f(IAsyncResult asyncResult) +44
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
System.Web.Mvc.Async.<>c__DisplayClass28.<BeginInvokeAction>b__19() +72
System.Web.Mvc.Async.<>c__DisplayClass1e.<BeginInvokeAction>b__1b(IAsyncResult asyncResult) +185
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(IAsyncResult asyncResult, ProcessRequestState innerState) +39
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514928
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18446
这就是我对用户所拥有的:
// 1) Peter teaches IPC144
Course c = new Course();
c.CourseCode = "IPC144";
c.CourseName = "Introduction into programming";
c.RoomNumber = "1000";
c.RunTime = "1000";
c.Faculty = f;
c.User = UserPeter; // 17
f.Courses.Add(c); //
c.Students.Add(bob);
bob.Courses.Add(c);
dc.Courses.Add(c);
c = null;
不幸的是,我无法在此处发布屏幕截图,但我正在使用断点进行调试,但我看不到User
的任何null
值。
我有这些文件:
Models/Initializer.cs
我初始化所有列表/表格。 ViewModels/Repo_Course.cs
我有查询的方法(返回错误)。 我没有得到的部分是这样的:
当我用断点调试时,我看到了:
Models/Initializer.cs
初始化Course
时,{li>在User
中,null
有一个值而不是ViewModels/Repo_Course.cs
。
第146行User
中的null
为UserPeter
!为什么??? ApplicationUser
的类型为var UserPeter = new ApplicationUser();
string userPw8 = "123456";
var userInfo8 = new MyUserInfo() { FirstName = "Peter", LastName = "Peterson" };
UserPeter.UserName = "Peter";
UserPeter.HomeTown = "Toronto";
UserPeter.MyUserInfo = userInfo8;
var UserPeterCreate = UserManager.Create(UserPeter, userPw8);
if (UserPeterCreate.Succeeded) {
var addUserPeterToRole3Result = UserManager.AddToRole(UserPeter.Id, roleName3);
}
:
ApplicationUser
IdentityUser
类,它来自public class ApplicationUser : IdentityUser {
//[Key]
//public int Id { get; set; }
public string HomeTown { get; set; }
//public virtual ICollection<Cancellation> Cancellations { get; set; }
//public virtual ICollection<Course> Courses { get; set; }
public virtual MyUserInfo MyUserInfo { get; set; }
}
:
MyUserInfo
public class MyUserInfo {
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
班
IdentityUser
public class IdentityUser : IUser {
public IdentityUser();
public IdentityUser(string userName);
public virtual ICollection<IdentityUserClaim> Claims { get; }
public virtual string Id { get; set; }
public virtual ICollection<IdentityUserLogin> Logins { get; }
public virtual string PasswordHash { get; set; }
public virtual ICollection<IdentityUserRole> Roles { get; }
public virtual string SecurityStamp { get; set; }
public virtual string UserName { get; set; }
}
类(来自元数据):
Course
public class Course { // 10
public Course() {
this.Faculty = new Faculty();
this.Students = new List<Student>();
}
[Key]
public int CourseId { get; set; }
public string CourseCode { get; set; }
public string CourseName { get; set; }
public string RoomNumber { get; set; }
public string RunTime { get; set; }
public Faculty Faculty { get; set; }
public List<Student> Students { get; set; }
public virtual ApplicationUser User { get; set; }
}
类:
{{1}}
答案 0 :(得分:0)
User对象列表中的一个值为null。
答案 1 :(得分:0)
如果第146行执行空访问,则courses
列表中包含null
值的可能性高于某些具有null
用户的课程。