我有一个 ajax 表单,当用户单击复选框将用户锁定时回发。当我检查该用户的 LockoutEndDateUtc 列时,它仍然为 NULL。
这是我的 Json 方法。
[Authorize]
[HttpPost]
public JsonResult AjaxUpdateUserLockout(string userId)
{
string message = "";
if (string.IsNullOrEmpty(userId)) message = "Unable to find user!";
try
{
var result = UpdateLockoutDate(userId);
message = "Success";
}
catch (Exception ex)
{
NLogger.Error(ex);
message = "Error updating user!";
}
return new JsonResult()
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new { result = message }
};
}
这是我设置锁定日期的方法
private async Task<IdentityResult> UpdateLockoutDate(string userId)
{
var user = ApplicationUserManager.FindById(userId, new AFFirst2Entities());
if (user.LockoutEndDateUtc != null && user.LockoutEndDateUtc != DateTime.MinValue)
{
return await ApplicationUserManager.SetLockoutEndDateAsync(userId, DateTimeOffset.MinValue);
}
else
{
return await ApplicationUserManager.SetLockoutEndDateAsync(userId, DateTimeOffset.MaxValue);
}
}
我错过了什么吗?所有用户的 LockoutEnabled 列都设置为 true。
最佳答案
我通过设置 user.LockoutEndDateUtc = DateTime.UtcNow
来解决这个问题,而不是使用 SetLockoutEndDateAsync
方法。
关于c# - SetLockoutEndDateAsync 不更新数据库中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41642171/