无法避免操作筛选器中的空引用异常(ASP.NET 核心)



我正在编写一个用于设置LastAccessDate用户属性的操作过滤器。在从数据库检索用户记录时,我得到了NullReferenceException。如何消除此异常?这是我的行动过滤器:

public class LogActivity : IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var resultContext = await next();
var id = int.Parse(resultContext.RouteData.Values["id"].ToString());
var repo = resultContext.HttpContext.RequestServices.GetService<UserRepo>();

Console.WriteLine(id);
// var user = await repo.GetRespondent(id);
var user= repo.GetRespondent(id).Result; <========= Here Exception occurs
if (user != null)
{
user.LastAccessDate = DateTime.Now;
await repo.SaveAll();
}
}
}

以下是我的UserRepo存储库的获取方法:

public async Task<User> GetRespondent(int id)
{
var user= await _context.User.FirstOrDefaultAsync(u => u.Id == id);
if (user!= null)
return user
return null;
}

替换此行

var user= repo.GetRespondent(id).Result; <========= Here Exception occurs

带有

var user = await repo.GetRespondent(id);

最新更新