2012-02-29 141 views
0

我们在我们的网站上遇到错误。我检查了事件查看器,并且执行应用程序池回收时,EF代码中的问题首先出现上升(请注意,这种情况不会每次都发生,应用程序池在每2小时后回收一次,并且存在实例,但并非总是如此,EF代码首先会出错经验丰富)。EF代码优先和IIS回收

 var user = GetSingle(u => u.Id == userId); 
     if (user == null) throw new ArgumentNullException("user"); 

     AutoMapper.Mapper.CreateMap<User, SessionUserDetails>(); 
     var sessionUserDetails = AutoMapper.Mapper.Map<User, SessionUserDetails>(user); 

当映射发生在错误发生时。如果没有用户,它会抛出一个ArgumentNullException。我再次检查了用户和SessionUserDetails,并且都有相同的变量。我不知道还有什么可以看的。

这里是automapper例外:

System.NullReferenceException: Object reference not set to an instance of an object. 
at AutoMapper.ConfigurationStore.<>c__DisplayClass35. <FindExplicitlyDefinedTypeMap>b__34(TypeMap x) 
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
at AutoMapper.ConfigurationStore.FindExplicitlyDefinedTypeMap(Type sourceType, Type destinationType) 
at AutoMapper.ConfigurationStore.CreateTypeMap(Type source, Type destination, String profileName) 
at AutoMapper.ConfigurationStore.CreateMap[TSource,TDestination](String profileName) 
at AutoMapper.ConfigurationStore.CreateMap[TSource,TDestination]() 
at AutoMapper.Mapper.CreateMap[TSource,TDestination]() 
at MVCAujourdhuiBL.Service.UserReg.UserService.GetUserDetails(Int32 userId) 

我不知道还有什么地方可以看。我甚至强迫iis回收,但我无法复制错误。任何帮助将非常感激。 :)谢谢

+0

在哪个地方你写在你的应用程序的代码AutoMapper? – 2012-02-29 08:58:28

+0

你也可以检查Mapper是否在应用程序池回收后使用日志记录机制?如果是这样你我重新初始化,如下所示:http://stackoverflow.com/questions/5537192/automapper-configuration – 2012-02-29 09:07:14

回答

0

CreateMap调用是否真的在你的Controller Action中?您应该将其拉出到app_start模块中。这不是线程安全的,可能会导致您的问题。

http://automapper.codeplex.com/workitem/3197

+0

感谢您的答复。这确实是automapper,我认为是造成问题的EF。谢谢。我们再也没有遇到过这样的错误。 – mabc21 2012-03-06 05:52:16