091502CC8D7F487BA52A08145ED03720
  • Thomas Pollinger
  • 05.01.2018
  • DE/EN

Root Cause Analysis: "Index was out of range. Must be non-negative and less than the size of the collection"

Es ist wie mit in der Software-Entwicklung, wenn man unsauberen Code schreibt oder nicht alle Varianten berücksichtigt, dann quietscht es im Getriebe. Daher sollte man sich auch nicht wundern, wenn seltsame Fehlermeldungen in den wsms.logs von Zeit zu Zeit auftreten. Dann heißt es nur verstehen, finden und dann reparieren ;)


Regel 20

Ein Computer beherrscht die kompliziertesten Dinge. Das sieht man am besten in seinen Fehlern. (Erhard Blanck)


Meldungen

Severity: Error
Component: Navigation
Category: Application
Source: Reddot.CMS.Rendering.Objects.ObjectReflector.GetObject (:0)
Message:
Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: SmartEdit; RequestId: {ID}; 
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
   at Reddot.CMS.Rendering.Objects.ObjectReflector.GetObject(String[]& objectArray, Int32 startDepth, Object value, IObjectLoadManager objectLoadManager)

Ursache

Wenn man versucht auf Inhalte eines Array / Index zuzugreifen, welche nicht vorhanden sind. Dies kann passieren, wenn man z.B. eine Funktion "-1" als Ergebnis liefert und dies dann zu den o.g. Meldungen führt.


Lösung

Es sollte immer dafür gesorgt werden, dass in alle möglichen Kombinationen eine korrekte und gültige Abfrage erfolgt. Vor allem bei Array wenn man mit Abfragen per [Wert] zugreift und dieses dann nicht vorhanden sind.


Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.

       

Downloads

 

QuickLinks

 

Channel