Behandlung von Ausnahmen in Plug-ins

Die Art und Weise, wie Ausnahmen in Plug-ins verwaltet werden, hängt von der Art der Plug-in-Schritt-Registrierung ab.

  • Ausnahmen für synchrone Plug-In-Schritte führen zum Abbruch und Rollback des Vorgangs. Sie haben die Möglichkeit, die an den Benutzer zurückgegebene Nachricht zu steuern.
  • Ausnahmen für asynchrone Plug-In-Schritte werden protokolliert und der Tabelle Systemauftrag, auch bekannt als AsyncOperation-Tabelle, hinzugefügt.

Abbrechen des laufenden Vorgangs

Innerhalb eines synchronen Plug-Ins haben Sie unter anderem die Option, die Anforderung abzulehnen. Wenn die Operation nicht den von Ihrem Plug-In erzwungenen Regeln entspricht, können Sie eine InvalidPluginExecutionException-Ausnahme auslösen und in der Nachricht die Gründe für die Ablehnung des Vorgangs angeben.

Idealerweise sollten Sie nur Vorgänge mithilfe synchroner Plug-Ins abbrechen, die in der Phase PreValidation registriert wurden. Diese Phase erfolgt gewöhnlich außerhalb der Hauptdatenbanktransaktion. Das Abbrechen eines Vorgangs, bevor er die Transaktion erreicht, ist sehr erwünscht, da der abgebrochene Vorgang zurückgesetzt werden muss. Der Rollback des Vorgangs erfordert beträchtliche Ressourcen und wirkt sich auf die Systemleistung aus. Vorgänge in den Phasen PreOperation und PostOperation befinden sich immer innerhalb der Datenbanktransaktion.

Manchmal befinden sich PreValidation-Stufen innerhalb einer Transaktion, wenn sie durch Logik in einem anderen Vorgang initiiert werden. Wenn Sie z. B. in der PostOperation-Phase der Erstellung eines Kontos einen Datensatz für eine Aufgabe erstellen, durchläuft die Aufgabenerstellung die Pipeline für die Ereignisausführung und findet in der PreValidation-Phase statt, gehört aber zur Transaktion, die den Datensatz der Kontotabelle erstellt. -Sie können feststellen, ob sich ein Vorgang innerhalb einer Transaktion befindet anhand des Werts der IExecutionContext.IsInTransaction Eigenschaft verfügbar sind.

Wie modellbasierte Apps synchrone Plug-in-Ausnahmen behandeln

Wenn Sie eine InvalidPluginExecutionException-Ausnahme innerhalb eines synchronen Plug-Ins auslösen, wird den Benutzenden ein Fehlerdialog mit Ihrer Nachricht angezeigt. Wenn Sie keine Meldung bereitstellen, wird den Benutzenden ein generischer Fehlerdialog angezeigt. Wenn eine andere Art von Ausnahme ausgelöst wird, sehen die Benutzenden einen Fehlerdialog mit einer generischen Nachricht und die Ausnahmemeldung und die Stapelüberwachung werden in die PluginTraceLog-Tabelle geschrieben.

Hinweis

In der Einheitlichen Benutzeroberfläche unterstützt der Fehlerdialog keine HTML-kodierten Inhalte in der Nachricht. Bitte nur Text.

Unerwartete Fehler

Wenn im Plug-In-Code für einen synchronen Schritt eine Ausnahme auftritt, wird die Verarbeitung des Pipelinevorgangs in der Datenbanktransaktion abgebrochen und ein Rollback findet statt, unabhängig davon, ob Sie eine InvalidPluginExecutionException auslösen oder nicht. InvalidPluginExecutionException ist die einzige Ausnahme, bei der Sie die Möglichkeit haben, zu steuern, welche Ausnahmemeldung den Benutzenden angezeigt werden soll. Dies gilt für modellbasierte Apps, die von Dynamics 365-Lösungen verwendet werden.

Sehen Sie sich die verfügbaren InvalidPluginExecutionException-Konstruktoren an, um zu sehen, welche Art von fehlerbezogenen Daten Ihr Plug-In an die Plattform zurückgeben kann.

Tipp

Wir empfehlen, dass Sie jeden Fehler abfangen und eine InvalidPluginExecutionException-Ausnahme auslösen, damit Sie steuern können, was dem Benutzer angezeigt wird. Dieser Fehler kann einfach „An unexpected error occurred“ sein, aber Sie könnten auch einige Informationen hinzufügen, die der Administrationsfachkraft bei der Fehlersuche helfen. Auf diese Weise haben Sie ein gewisses Steuerelement. Wenn Sie andere Arten von Ausnahmen zulassen, wird der Fehler als IsvUnExpected-Fehler mit der Nachricht An unexpected error occurred from ISV code. dargestellt, was nicht sehr hilfreich ist.

Wie Ausnahmen bei asynchronen Plug-ins behandelt werden

Die Nachricht über die Ausnahme für asynchrone registrierte Plug-Ins wird in eine Tabelle Systemauftrag geschrieben, die auch als AsyncOperation-Tabele bekannt ist und im Bereich Systemauftrag der Webanwendung eingesehen werden kann. Den Benutzenden wird kein Dialog angezeigt. Asynchrone Plug-Ins nehmen nicht an der Datenbanktransaktion teil, die sie in die Warteschlange gestellt hat, daher können sie die Transaktion nicht abbrechen.

Wiederholung eines asynchronen Plug-ins

Mit einem asynchronen Plug-In-Schritt können Sie es erneut versuchen, wenn ein Plug-In fehlschlägt. Der Grund für den fehlgeschlagenen Versuch kann ein Netzwerkfehler oder ein anderer wiederholbarer Fehler beim Aufruf einer externen Ressource sein.

Um Ihr Plugin erneut zu versuchen, verwenden Sie den InvalidPluginExecutionException(OperationStatus, Int32, String) Konstruktor mit dem OperationStatus Enum Retry-Memberwert.

Wenn Ihr Plug-In diese Art von Ausnahme auslöst, versucht der asynchrone Dienst viermal, Ihr Plug-In auszuführen. Wenn die Plug-In-Ausführung bei vier Versuchen nicht erfolgreich ist, schlägt der Aufruf fehl.

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).