asp.net-core - 无法避免动作筛选器中的 NullReferenceException (ASP.NET Core)
问题描述
我正在编写一个用于设置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
的存储库的 get 方法:
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);
推荐阅读
- python - 提高嵌套 for 循环计数到字典中的效率 - Python
- c# - WinUI ItemsRepeater如何添加交错的项目入口动画?
- html - 选择 DIV 与另一个 DIV 之外的 DIV 父级使用严格的 CSS
- python - 安装 VS Code 包以在多个 Conda 环境中工作
- wordpress - 显示锚内容的 Wordpress 插件
- python - 您如何使用 Xpath - Python 单击页面上的所有文本
- c# - 不会让我在我的 cshtml 页面上拉我的列表
- sql - 当 Where 子句与 PostgreSQL 数据库中的条目不匹配时返回空行
- amazon-web-services - 无法使用 OpenAPI 3.0.0 规范执行基本验证
- laravel - 我正在寻找自定义 laravel 默认身份验证的最佳方法