【发布时间】:2021-10-24 07:19:01
【问题描述】:
我打算在.net core mvc登录后获取用户的数据,但是出现这个错误,是什么?以及如何解决?
InvalidOperationException:无法创建类型为“Microsoft.AspNetCore.Identity.UserManager`1[[Microsoft.AspNetCore.Identity.IdentityUser, Microsoft.Extensions.Identity.Stores, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]]'。模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数。记录类型必须有一个主构造函数。或者,给“userManager”参数一个非空的默认值。
private UserManager<ApplicationUser> _userManager;
public void HomeController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
public async Task<IActionResult> MySchedule(UserManager<IdentityUser> userManager)
{
var CourseChosen = from m in _context.CourseChosen
select m;
var userid = _userManager.GetUserId(HttpContext.User);
if (userid == null)
{
return RedirectToAction("Login", "Account");
}
else
{
ApplicationUser user = await _userManager.GetUserAsync(User);
var identification = user.StudentId;
CourseChosen = CourseChosen.Where(x => x.StudentId == identification);
var coursechosen = new MyCourse
{
MyCourses = await CourseChosen.ToListAsync()
};
return View(coursechosen);
}
}
【问题讨论】:
-
嗨@Weber Wang,这个错误是由
UserManager<IdentityUser> userManager作为MySchedule操作中的参数引起的。只需将其删除。 -
嗨@Rena,我删除了它,但它显示“System.NullReferenceException:'对象引用未设置为对象的实例。' " 在 var userid = _userManager.GetUserId(HttpContext.User);这是什么意思?
-
你好@Weber Wang,在使用
_userManager.GetUserId之前,请先检查HttpContext.User是否包含数据。 -
@Rena,它显示 _userManager 为空,所以我认为我没有在 public void HomeController(UserManager
userManager) { _userManager = userManager; } 我不知道发生了什么 -
嗨@Weber Wang,
public void HomeController作为构造函数不正确。void不需要。
标签: asp.net-mvc asp.net-core asp.net-identity