AutoMapper“锁定”该站点并抛出IndexOutOfRangeException

时间:2012-02-17 13:28:44

标签: c# .net automapper

我在我的网站上使用AutoMapper。它工作得很好,但大约每两周我会得到一个黄页(请参阅下面的堆栈跟踪),解决此问题的唯一方法是重新启动站点(回收应用程序池)。 AutoMapper版本:2.0.9999(如文件属性所示)。

任何想法可能是由什么造成的?这是配置步骤失败(发生一次)吗?

[IndexOutOfRangeException: Index was outside the bounds of the array.]
  System.Collections.Generic.Enumerator.MoveNext() +75
  System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source, Func`2 predicate) +166
  AutoMapper.ConfigurationStore.FindExplicitlyDefinedTypeMap(Type sourceType, Type destinationType) +147
  AutoMapper.ConfigurationStore.FindTypeMap(Object source, Type sourceType, Type destinationType, String profileName) +169
  AutoMapper.ConfigurationStore.FindTypeMapFor(Object source, Type sourceType, Type destinationType) +279
  AutoMapper.MappingEngine.Map(Object source, Type sourceType, Type destinationType) +71
  AutoMapper.MappingEngine.Map(TSource source) +190
  AutoMapper.Mapper.Map(TSource source) +105
  WowReforge.ViewModels.ReforgeViewModel.LoadToonGear(IDictionary`2 gear, IDictionary`2 itemsRefInfo) +307
  ...

1 个答案:

答案 0 :(得分:1)

查看ILSpy中的System.Linq.Enumerable FirstOrDefault,调用IEnumerator.MoveNext,就像你提供的stacktrace中所示。但它并没有说明它是IEnumerator的实现。从那以后很难说出MoveNext中究竟会发生什么。

映射涉及哪些对象?你使用什么类型的收藏?

如果您正在使用自己的IEnumerator实现,那么在为Current提供值或在MoveNext方法中计算错误的索引时,您是否做错了?