0

所以,我得到一个生产服务器上抛出的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依赖关系注入构造函数? 如果是这样,是否可以避免?

谢谢!

+1

为什么不在这两行之间添加检查?这样你就可以找出它是哪一个,然后把你的调查集中在那个问题上......'userSubscribedEvent'肯定是非空的,btw?我没有使用过AutoMapper(或者StructureMap),但是如果输入值为null,Mapper.Map可能返回null吗? –

+0

你确定在'GetActiveSubscriptionForUser'方法中没有抛出异常吗? –

+0

放一个try-catch并在catch子句中添加一些日志记录。 – Andreas

回答

0

解决:这个问题实际上是在使用时对认购(不好意思)属性下面的一行,在服务器运行与曾在顶部一个额外的空行的文件。那里没有活动的订阅,因为客户端在关闭活动订阅之后发送了请求。 : - /再次

感谢您的帮助,而对没有检查我自己的生产代码更好的遗憾。

1

能Mapper.Map返回NULL在AutoMapper

是。

如果是这样,是什么时候?

如果传递null作为参数。在你的情况下,这将是userSubscribedEvent变量。