所以,我得到一个生产服务器上抛出的NullReferenceException。它不可重现,每发生一次约100次请求就会发生一次。NullReferenceException使用AutoMapper和StructureMap
这是代码。
var userInfo = Mapper.Map<UserSubscribedEvent, UserInfo>(userSubscribedEvent);
var subscription = repository.GetActiveSubscriptionForUser(userInfo.UserId);
第二行出现异常。所以它要么是userInfo,要么是null,要么是存储库。
系统信息库使用StructureMap所以它真的不应该是零(因为它通常工作),并使用AutoMapper创建用户信息,并不能为空或者注入类的构造函数。
所以我的问题是 - 能否Mapper.Map在AutoMapper,如果是的话返回null,什么时候? 如果没有,有没有人经历过StructureMap随机将null依赖关系注入构造函数? 如果是这样,是否可以避免?
谢谢!
为什么不在这两行之间添加检查?这样你就可以找出它是哪一个,然后把你的调查集中在那个问题上......'userSubscribedEvent'肯定是非空的,btw?我没有使用过AutoMapper(或者StructureMap),但是如果输入值为null,Mapper.Map可能返回null吗? –
你确定在'GetActiveSubscriptionForUser'方法中没有抛出异常吗? –
放一个try-catch并在catch子句中添加一些日志记录。 – Andreas