Ich hosste eine Anwendung, die AutoMapper verwendet, um bestimmte Klassen in andere zu konvertieren. Das lief bis heute gut. Die Anwendung wurde jetzt für ca. 3 Monate gehostet. Zwischendurch haben wir mehrere Deploys durchgeführt, bei denen die Anwendung neu gestartet wurde, aber IIS nicht.AutoMapper 1.1 CreateMap löst NullReferenceException nach langer Betriebszeit
aus dem Nichts die Anwendung gestartet wird, scheitern an den Protokollen im Rückblick fanden wir heraus, dass dies die Ursache ist:
System.NullReferenceException: Object reference not set to an instance of an object.
at AutoMapper.Configuration.<>c__DisplayClass13.<FindExplicitlyDefinedTypeMap>b__12(TypeMap x)
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at AutoMapper.Configuration.FindExplicitlyDefinedTypeMap(Type sourceType, Type destinationType)
at AutoMapper.Configuration.CreateTypeMap(Type source, Type destination, String profileName)
at AutoMapper.Configuration.CreateMap[TSource,TDestination](String profileName)
at AutoMapper.Configuration.CreateMap[TSource,TDestination]()
at AutoMapper.Mapper.CreateMap[TSource,TDestination]()
So wir unseren Backup-Server eingeschaltet, die dieses Problem nicht haben an alle. Wir haben versucht, das Problem durch einen Neustart der Anwendung zu beheben, was nicht geholfen hat. Nur Neustart von IIS behebt das Problem.
Wir haben versucht, in der Quelle zu suchen, um herauszufinden, was dieses Problem verursacht, die wir unter https://github.com/jbogard/AutoMapper/ heruntergeladen haben. Die Ausnahme scheint in dieser Methode der ConfigurationStore-Klasse von AutoMapper verursacht zu werden.
private TypeMap FindExplicitlyDefinedTypeMap(Type sourceType, Type destinationType)
{
return _typeMaps.FirstOrDefault(x => x.DestinationType == destinationType && x.SourceType == sourceType);
}
_typeMaps ist in der Klasse wie folgt definiert.
private readonly IList<TypeMap> _typeMaps = new List<TypeMap>();
Wenn wir im TypeMap überprüfen wir sehen, dass die x.DestionationType und x.SourceType Bezug auf andere Eigenschaften:
private readonly TypeInfo _destinationType;
private readonly TypeInfo _sourceType;
public Type SourceType
{
get { return _sourceType.Type; }
}
public Type DestinationType
{
get { return _destinationType.Type; }
}
Es ist wie _sourceType sieht und/oder _destionationType sind null al die plötzlich!
Hat jemand anderes dieses Problem und/oder kennt jemand eine mögliche Ursache für dieses Problem und wie können wir verhindern, dass dies in der Zukunft geschieht?