091502CC8D7F487BA52A08145ED03720
  • Thomas Pollinger
  • 05.07.2017
  • DE/EN

Root Cause Analysis: "...startIndex cannot be larger than length of string."

Die meisten Fehlermeldungen werden durch Projektbau-Fehler ausgelöst. Daher sollte man immer die Handbücher, Release-Notes und anhängige Dokumentation lesen.


Regel 3

Es ist noch kein Meister vom Himmel gefallen. Daher immer die Augen aufhalten und die Ursache verstehen lernen.


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: {Preview|SmartEdit|Publish}; RequestId: {ID};
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex
   at System.String.Substring(Int32 startIndex, Int32 length)
   --- 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.MethodBase.Invoke(Object obj, Object[] parameters)
   at Reddot.CMS.Rendering.Objects.ObjectReflector.GetObject(String[]& objectArray, Int32 startDepth, Object value, IObjectLoadManager objectLoadManager)

Ursache

Diese Meldung hat eine recht einfache Ursache. Wenn innerhalb von Rendertags ein SubString auf einen leeren oder zu kleinen String angewendet wird, kommt es zu dieser Meldung.


Lösung

Die Content-Klasse, mit der angezeigten GUID, suchen und dann dafür sorgen, dass der SubString immer korrekt befüttert wird. Am besten mit einer if-query-Prüfung auf die Länge des Strings ;)


Anmerkungen

Tipp: Um die Content-Klasse schneller im entsprechenden Projekt an Hand der GUID zu finden, einfach das kleine Helferchen aus dem Artikel Plug-Ins: "Find Content-Class by Guid" nutzen.


Ü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.