Несколько вещей:
DateTime.Now
возвращает местное время. Вы должны использовать DateTime.UtcNow
вместо.
Почти невозможно точно соответствовать текущему времени, поскольку обычно эти значения отслеживаются с точностью до 7 десятичных знаков. Вместо этого вы должны использовать >
, <
, >=
или <=
.
Я предполагаю несколько вещей, не указанных в вашем вопросе, но если вы хотели заблокировать пользователя на 5 минут, то, вероятно, вы хотели установить значение базы данных с помощью:
user.LockoutEndDateUtc = DateTime.UtcNow.AddMinutes(5);
и, вероятно, вы должны сравнить это с:
if (DateTime.UtcNow >= user.LockoutEndDateUtc)