root-cause-logo.png
  • Thomas Pollinger
  • 12.07.2017
  • DE/EN

Root Cause Analysis: "EscapeLoader.OnGetObject ... Object reference not set to an instance of an object."

Vieles im Projektbau wird auf Basis von Testdaten gebaut. Jedoch sobald es in Produktion geht und echte Anwender dann endlich die Inhalte pflegen, kann es zu echt interessanten Verhalten im Web Site Management Server kommen.


Regel 4: Testdaten für die Entwicklung sind gut, spiegeln aber nicht das echte Arbeitsleben wieder. Daher immer die Anwender auch während der Entwicklung einbinden und testen lassen. ;)


Meldung

Severity: Error
Component: Navigation
Category: Application
Source: Reddot.CMS.Rendering.Objects.EscapeLoader.OnGetObject (:0)
Message:
Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: {Preview|SmartEdit|Publish}; RequestId: {ID};
System.NullReferenceException: Object reference not set to an instance of an object.
   at Reddot.CMS.Rendering.Objects.EscapeLoader.OnGetObject(String[] objectArray, IObjectLoadManager objectLoadManager, IPageRenderingContext context)

 

Ursache

Für diese Meldung gibt es eine sehr einfache Ursache, wenn man den EscapeLoader z.B. wie folgt verwendet <%!! Escape:EncodeHtml(String:<%textElement%>) !!%> und der Text leer ist.
 

Lösung

Wir konnten zwei Lösungen ermitteln. Die erste wäre eine if-query Bedingung um den EscapeLoader setzen, wenn nicht 100% garantiert werden kann, dass immer ein Text vorhanden ist. Oder die Abfrage umbauen, sofern möglich, z.B. auf <%!! Context:CurrentPage.GetElementByName(String:textElement).GetHtml().EncodeHtml() !!%>. Alternativ kann man auch mit den "Conditional Blockmarkierungen" spielen ;).

 

Social Media