C# 使用AutoMapper和StructureMap的NullReferenceException

C# 使用AutoMapper和StructureMap的NullReferenceException,c#,exception-handling,inversion-of-control,structuremap,automapper,C#,Exception Handling,Inversion Of Control,Structuremap,Automapper,因此,我在生产服务器上抛出了一个NullReferenceException。它是不可复制的,每100个请求发生一次 这是代码 var userInfo = Mapper.Map<UserSubscribedEvent, UserInfo>(userSubscribedEvent); var subscription = repository.GetActiveSubscriptionForUser(userInfo.UserId); var userInfo=Mapper.Map

因此,我在生产服务器上抛出了一个NullReferenceException。它是不可复制的,每100个请求发生一次

这是代码

var userInfo = Mapper.Map<UserSubscribedEvent, UserInfo>(userSubscribedEvent);
var subscription = repository.GetActiveSubscriptionForUser(userInfo.UserId);
var userInfo=Mapper.Map(userSubscribedEvent);
var subscription=repository.GetActiveSubscriptionForUser(userInfo.UserId);
异常出现在第二行。所以要么userInfo为null,要么就是存储库

存储库是使用StructureMap从构造函数注入类的,因此它实际上不应该为null(因为它通常可以工作),userInfo是使用AutoMaper创建的,也不应该为null

所以我的问题是-Mapper.Map能在AutoMapper中返回null吗,如果是,什么时候? 如果没有,是否有人体验过StructureMap将空依赖项随机注入构造函数? 如果是,可以避免吗

谢谢

自动映射器中的Mapper.Map是否可以返回null

如果是,什么时候


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

已解决:当在订阅上使用属性时,问题实际上出现在下面的一行(尴尬),服务器运行时,文件顶部有一个额外的空行。自客户端在关闭活动订阅后立即发送请求以来,没有活动订阅:-/


再次感谢您的帮助,很抱歉没有更好地检查我自己的生产代码。

为什么不在这两行之间添加检查?这样你就可以找出是哪一个,然后集中精力调查这一个问题。。。顺便说一句,
userSubscribedEvent
是否绝对非空?我没有使用过AutoMapper(或StructureMap)但是,如果输入值为null,Mapper.Map是否可能返回null?是否确定在
GetActiveSubscriptionForUser
方法中未引发异常?请尝试捕获并在catch子句中添加一些日志记录。我的目标是避免部署带有附加日志记录的新版本。如果这无法避免,我将默认回到这一点。如果参数为null,则AutoMapper将返回null是正确的。所讨论的参数直接来自JSON,我已将其记录为NOTNULL,因此这应该不是问题,即使我不能排除它。