gpt4 book ai didi

asp.net-mvc-5 - ASP.NET MVC 5 EntityFramework 中意外出现底层 NullReferenceException 问题

转载 作者:行者123 更新时间:2023-12-02 21:11:51 25 4
gpt4 key购买 nike

专家

我在访问 MVC 5 网站的主页时遇到问题,请参阅下面的异常详细信息。

MVC 5.2.2

EntityFramework 6.1.1

Visual Studio 2013

System.NullReferenceException: Object reference not set to an instance of an object.
at System.Data.Entity.Core.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me, Object instance, Object& memberValue)
at System.Data.Entity.Core.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression, ConstantExpression& constantExpression)
at System.Data.Entity.Core.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object[] arguments)
at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassc.<GetResultsAsync>b__a()
at System.Data.Entity.Core.Objects.ObjectContext.<ExecuteInTransactionAsync>d__3d`1.MoveNext()

代码非常简单,它从当前 OwinContext 中共享的数据上下文异步查询数据,它正常工作,但是不小心,由于之前的错误而失败。

public class TalentsService : ServiceBase
{
public async Task<List<TalentSummaryViewModel>> GetSlotlightTalents()
{
var talents = await DbContext.Talents.Where(t => t.IsSpotlight && IsAuthenticated).ToListAsync();

return talents.Select(t => WrapModel(t)).ToList();
}
}

public abstract class ServiceBase
{
private ApplicationDbContext _dbContext;
public ApplicationDbContext DbContext
{
get
{
return _dbContext ?? HttpContext.Current.GetOwinContext().Get<ApplicationDbContext>();
}
private set
{
_dbContext = value;
}
}

public bool IsAuthenticated
{
get
{
return HttpContext.Current.Request.IsAuthenticated;
}
}
}

这与多线程有关吗?我无法弄清楚根本原因是什么,任何线索将不胜感激,提前致谢。

最佳答案

感谢 Chris Pratt 的回复,这让我仔细检查了我的代码,根本原因是:

在某些我不知道的情况下,HttpContext.Current 为 null,然后调用此属性 IsAuthenticated 失败,因此我必须将 IsAuthenticated 值存储在本地变量中,现在我可以轻松重现此问题当使用LoadTest工具发起大量请求时,但仍然不清楚为什么上下文会意外丢失,可能其他人对此有更多的了解。

关于asp.net-mvc-5 - ASP.NET MVC 5 EntityFramework 中意外出现底层 NullReferenceException 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com