CRM 2011 Workflow Fehler "ungültiger Zeiger"

8

Ich habe einen benutzerdefinierten Workflow in CRM 2011, der manuell für benutzerdefinierte Entitätsdatensätze ausgelöst wird. Wenn ein einzelner Datensatz zur Verarbeitung ausgewählt wird, ist der Workflow immer erfolgreich. Wenn Sie jedoch mehr als einen Datensatz auswählen, schlägt mindestens einer fehl. Der Fehler scheint von einem Versuch zum nächsten zu variieren, obwohl die gleichen Daten verwendet werden.

Fehler, auf die ich bisher gestoßen bin:

  • ValidateOpen - Encountered disponierte CrmDbConnection, wenn es sollte nicht entsorgt werden Sie können keinen SqlExecutionContext von einem anderen
  • erstellen
  • SqlExecutionContext, auf dem OnBeginRequest nicht
  • aufgerufen wurde

Und nach dem Neustart des DB-Servers:

  • Ungültiger Zeiger

All dies tritt auf, wenn die Update-Methode des IOrganizationService aufgerufen wird. Der Fehler "Ungültiger Zeiger" scheint der häufigere Fehler seit dem Neustart des DB-Servers zu sein (es wurde mir vorgeschlagen, dass dies ein Problem mit einem übermäßig ausgelasteten DB-Server sein könnte). Ich habe auch einen Rückstand von asynchronen Aufgaben gelöscht, falls dies das Problem war, aber es hatte keine Wirkung.

Weiß jemand, was dieser Fehler bedeutet, warum ich ihn bekomme oder wie ich das Problem umgehen kann?

Vielen Dank!

    
Alec 13.02.2012, 17:32
quelle

2 Antworten

7

Es scheint, dass diese Fehlermeldung eine runde Sache ist zu sagen, "versucht, eine andere Verbindung zu CRM zu öffnen, wenn die vorherige offen war", und der Grund es versucht, dies zu tun ist sehr sehr relevant für die Tatsache, dass es nur fehlschlägt, wenn mehr als ein Datensatz verarbeitet wird.

Verweise auf dieses Blog:

Es scheint, dass wenn ein Workflow für mehrere Datensätze ausgeführt wird, dieselbe Instanz der Klasse verwendet wird, was bedeutet, dass Variablen auf Klassenebene zwischen den Ausführungen nicht erneut instanziiert werden. Wenn also nachfolgende Ausführungen zu dem Code kommen, der die Service-Variable auf Klassenebene auf eine Instanz eines IOrganizationService setzt, findet er, dass die Variablen bereits eins haben und offen ist.

Die Lösung, die ich am einfachsten gefunden habe, um die Servicevariable innerhalb der Execute-Funktion zu implementieren, statt auf Klassenebene. Das hat das Problem überall gelöst, wo ich es seither probiert habe.

    
Alec 25.05.2012, 14:30
quelle
0

Entsprechend den CRM 2011 Web Service-Fehlercodes ...

InvalidPointer - Das Objekt wird entsorgt.

    
Jason Lattimer 13.02.2012 19:10
quelle