HTTP-Anforderungen erstellen und Fehler behandeln

Sie interagieren mit der Web-API, indem Sie HTTP-Anforderungen erstellen und senden. Sie müssen wissen, wie die entsprechenden HTTP-Kopfzeilen festgelegt werden, und auf mögliche Fehler in der Antwort reagieren.

Web-API-URL und Versionen

So finden Sie die Web-API-URL für Ihre Umgebung:

  1. Melden Sie sich bei Power Apps an, und wählen Sie dann Ihre Umgebung in der oberen rechten Ecke aus.

  2. Wählen Sie die Schaltfläche Einstellungen in der oberen rechten Ecke und wählen Sie dann Entwickler-Ressourcen.

    Screenshot des Menüs

    Von hier aus können Sie den Wert für den Web-API-Endpunkt kopieren. Weitere Informationen finden Sie unter Anzeigen von Entwicklerressourcen.

In der folgenden Tabelle werden die Teile der URL beschrieben:

Teil Beschreibung
Protokoll https://
Umgebungsname Der eindeutige Name, der für Ihre Umgebung gilt. Wenn Ihr Firmenname Contoso ist, lautet dies möglicherweise contoso.
Region Ihre Umgebung befindet sich normalerweise in einem geografisch nahen Rechenzentrum. Für Nordamerika ist es crm. Für Südamerika crm2. Für Japan crm7. Die vollständige Liste finden Sie unter "Rechenzentrumsbereiche".
Basis-URL Dieser Wert ist in der Regel dynamics.com., aber einige Rechenzentren verwenden unterschiedliche Werte. Siehe Datacenter-Regionen.
Web-API-Pfad Der Pfad zur Web-API ist /api/data/.
Version Die Version wird auf folgende Weise ausgedrückt: v[Major_version].[Minor_version][PatchVersion]/. Die aktuelle Version ist v9.2.
Resource EntitySetName der Tabelle oder der Name der Funktion oder Aktionen, die Sie verwenden möchten.

Die URL, die Sie verwenden, setzt sich aus diesen Teilen zusammen:

Protokoll + Umgebungsname + Region + Basis-URL + Web-API-Pfad + Version + Ressource.

Abrufen der Web-API-URL aus dem Ermittlungsdienst

Jeder Mandant kann über mehrere Umgebungen verfügen. Der Ermittlungsdienst gibt Informationen zu den Umgebungen zurück, die im Mandanten vorhanden sind. Dieser Dienst gibt eine Liste von Datensätzen Instance zurück. Die Instance.ApiUrl Eigenschaft stellt dieBasis-URL derProtokollumgebungsumgebung + + + für die Umgebung bereit.

Maximale URL-Länge

Die maximale URL-Länge, die der Dienst akzeptiert, beträgt 32 KB (32.768 Zeichen). Diese Länge eignet sich für die meisten Arten von Anforderungen, mit Ausnahme bestimmter GET Vorgänge, die sehr lange Zeichenfolgenabfrageparameter erfordern, z. B. Abfragen, die FetchXml verwenden. Wenn Sie Anfragen innerhalb des Hauptteils einer $batch-Anforderung senden, können Sie Anforderungen mit URLs von bis zu 64 KB (65.536 Zeichen) senden. Erfahren Sie mehr über das Senden von FetchXML innerhalb einer $batch-Anforderung.

Maximale OData-Segmentlänge

Die maximale Länge eines einzelnen Abschnitts in einer OData-Anforderung beträgt 260 Zeichen. Wenn ein einzelnes Segment der OData-Anforderung mehr als 260 Zeichen lang ist, gibt die Anforderung zurück 400 Bad Request - Invalid URL. Das Segment ist der Teil "Ressource" der URL und enthält alle Zeichen, die zum Beschreiben des Endpunkts und aller Inlineparameter erforderlich sind.

Wenn die Anforderung beispielsweise api/data/v9.2/MyApi(MyParameter='longvalue') ist, dann ist MyApi(MyParameter='longvalue') das Segment, das 260 Zeichen nicht überschreiten kann. Verwenden Sie immer Parameteraliase mit OData-Funktionen. Wenn Sie beispielsweise Ihre Funktion wie /api/data/v9.2/MyApi(MyParameter=@alias)?@alias='longvalue' zusammenstellen, wird das Segment auf nur MyApi(MyParameter=@alias) gekürzt. Erfahren Sie mehr über die Verwendung von Parameteraliasen mit Web-API-Funktionen.

Versionskompatibilität

In dieser Version werden Funktionen eingeführt, die in früheren Versionen nicht unterstützt werden. Nachfolgende Nebenversionen bieten möglicherweise mehr Funktionen, die frühere Nebenversionen nicht unterstützen. Ihr für v9.0 geschriebener Code funktioniert weiterhin in zukünftigen Versionen, wenn Sie in Ihrer URL auf v9.0 verweisen.

Wenn neue Funktionen eingeführt werden, können sie mit früheren Versionen in Konflikt stehen. Diese wichtigen Änderungen sind erforderlich, um den Dienst zu verbessern. In den meisten Fällen bleiben die Funktionen zwischen Versionen gleich, aber nehmen Sie nicht an, dass sie es immer tun.

Hinweis

Im Gegensatz zu den v8.x-Nebenversionen wenden zukünftige Versionen keine neuen Funktionen oder andere Änderungen an früheren Versionen an. Achten Sie auf die Version des von Ihnen verwendeten Dienstes und testen Sie Ihren Code, wenn Sie die verwendete Version ändern.

HTTP-Methoden

In der folgenden Tabelle sind die HTTP-Methoden aufgeführt, die Sie mit der Dataverse Web-API verwenden können.

Methode Verwendung
DELETE Verwenden Sie dies beim Löschen von Entitäten oder einzelnen Eigenschaften von Entitäten.
GET Wird zur Datenabfrage verwendet, einschließlich Funktionaufrufen. Der erwartete Statuscode für einen erfolgreichen Abruf lautet 200 OK.
PATCH Wird verwendet, wenn Entitäten aktualisiert oder Upsert-Operationen ausgeführt werden.
POST Wird verwendet wenn Entitäten erstellt oder Aktionen aufgerufen werden.
PUT Verwendung in bestimmten Fällen zur Aktualisierung einzelner Eigenschaften von Entitäten. Diese Methode wird nicht empfohlen, wenn die meisten Entitäten aktualisiert werden. Verwenden Sie PUT, wenn Sie Tabellendefinitionen aktualisieren. Weitere Informationen finden Sie unter Verwenden der Web-API mit Tabellendefinitionen.

HTTP-Kopfzeilen

Fügen Sie mindestens die folgenden Header in alle HTTP-Anforderungen ein.

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null

Obwohl das OData-Protokoll sowohl das JSON- als auch ATOM-Format zulässt, unzerstützt die Web-API nur JSON. Jede Anfrage sollte den Accept-Kopfzeilenwert von application/json beinhalten, auch wenn keine Antwort erwartet wird. Die Web-API gibt einen Fehler in der Antwort als JSON zurück. Ihr Code sollte auch dann funktionieren, wenn dieser Header nicht enthalten ist, fügen Sie ihn als bewährte Methode hinzu.

Die aktuelle OData-Version ist 4.0, aber zukünftige Versionen können neue Funktionen einführen. Um sicherzustellen, dass es keine Mehrdeutigkeit über die OData-Version gibt, die für Ihren Code gilt, schließen Sie immer eine explizite Anweisung der aktuellen OData-Version und die maximale Version ein. Verwenden Sie beide OData-Version- und OData-MaxVersion-Header, die auf den Wert 4.0 festgelegt sind.

Abfragen, die Eigenschaften für die Sammlungswertnavigation erweitern, geben möglicherweise zwischengespeicherte Daten für diese Eigenschaften zurück, die keine kürzlich vorgenommenen Änderungen widerspiegeln. Fügen Sie den If-None-Match: null-Header im Anforderungstext ein, um die Browser-Caching der Web-API-Anforderung zu überschreiben. Weitere Informationen finden Sie unter Hypertext Transfer Protocol (HTTP/1.1): Bedingte Anforderungen 3.2: If-None-Match.

Jede Anfrage, die JSON-Daten im Anforderungstext enthält, muss einen Content-Type-Header mit einem Wert von application/json beinhalten.

Content-Type: application/json  

Verwenden Sie andere Header, um bestimmte Funktionen zu aktivieren.

Bevorzugte Header

Verwenden Sie die Prefer-Kopfzeile mit den folgenden Werten, um Einstellungen anzugeben.

Prefer-Wert Beschreibung
odata.include-annotations Siehe Anmerkungen anfordern
odata.maxpagesize Verwenden Sie diese Einstellung, um anzugeben, wie viele Seiten Sie in einer Abfrage zurückgeben möchten. Weitere Informationen: Seitenergebnisse
odata.track-changes Die Änderungsnachverfolgungsfunktion sorgt dafür, dass die Daten effizient synchronisiert werden, indem ermittelt wird, welche Daten seit der ersten Synchronisierung oder letzten Synchronisierung der Daten geändert wurden. Weitere Informationen: Verwenden der Änderungsnachverfolgung zum Synchronisieren von Daten mit externen Systemen
respond-async Gibt an, dass die Anforderung asynchron verarbeitet werden sollte. Weitere Informationen: Hintergrundvorgänge (Vorschau)
return=representation Verwenden Sie diese Einstellung, um Daten für Erstellungs- (POST) oder Aktualisierungsvorgänge (PATCH) für Objekte zurückzugeben. Wenn Sie diese Einstellung auf eine POST Anforderung anwenden, weist eine erfolgreiche Antwort den Status 201 Created auf. Bei einer PATCH Anforderung verfügt eine erfolgreiche Antwort über einen Status 200 OK. Ohne diese Einstellung geben beide Vorgänge den Status 204 No Content zurück, um anzuzeigen, dass der Antworttext keine Daten enthält. Weitere Informationen: Mit zurückgegebenen Daten erstellen und Mit zurückgegebenen Daten aktualisieren

Hinweis

Sie können mehrere Prefer Kopfzeilen angeben, indem Sie durch Trennzeichen getrennte Werte verwenden. Beispiel: Prefer: respond-async,odata.include-annotations="*"

Anmerkungen anfordern

Sie können verschiedene OData-Anmerkungsdaten anfordern, die mit den Ergebnissen zurückgegeben werden sollen, indem Sie den Prefer: odata.include-annotations Anforderungsheader verwenden. Sie können auswählen, ob alle Anmerkungen zurückgegeben oder bestimmte Anmerkungen angegeben werden sollen. Die folgende Tabelle beschreibt die Anmerkungen, die die Dataverse Web-API unterstützt:

Anmerkung Beschreibung
Microsoft.Dynamics.CRM.associatednavigationproperty
Microsoft.Dynamics.CRM.lookuplogicalname
Gibt Informationen zu verwandten Nachschlagespalten zurück. Weitere Informationen: Eigenschaftsdaten nachschlagen und Mehrtabellen-Nachschlagen
Microsoft.Dynamics.CRM.globalmetadataversion Sie können diese Anmerkung in Ihrer Anwendung zwischenspeichern. Der Wert ändert sich, wenn eine Schemaänderung eintritt, was angibt, dass Sie möglicherweise schemadaten aktualisieren müssen, die Ihre Anwendung zwischengespeichert hat. Weitere Informationen: Cache-Schemadaten
Microsoft.Dynamics.CRM.totalrecordcount
Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded
Wenn Sie die $count Abfrageoption verwenden, gibt die @odata.count Anmerkung die Anzahl der Datensätze an, aber es können jeweils nur 5.000 Standardtabellendatensätze zurückgegeben werden. Bei elastischen Tabellen beträgt der Grenzwert für die Seitengröße 500. Fordern Sie die Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded Anmerkung an, um einen booleschen Wert abzurufen, der angibt, ob die Gesamtanzahl der Datensätze, die mit der Abfrage übereinstimmen, die maximale Seitengröße für den typ der verwendeten Tabelle überschreitet. Weitere Informationen: Anzahl der Zeilen ermitteln
Microsoft.PowerApps.CDS.ErrorDetails.OperationStatus
Microsoft.PowerApps.CDS.ErrorDetails.SubErrorCode
Microsoft.PowerApps.CDS.HelpLink
Microsoft.PowerApps.CDS.TraceText
Microsoft.PowerApps.CDS.InnerError.Message
Diese Anmerkungen liefern mehr Details, wenn Fehler zurückgegeben werden. Mehr Informationen: Mehr Details bei Fehlern hinzufügen
OData.Community.Display.V1.FormattedValue Gibt formatierte Zeichenfolgenwerte zurück, die Sie in Ihrer Anwendung verwenden können. Weitere Informationen: Formatierte Werte

Um bestimmte Anmerkungen anzufordern, fügen Sie sie als durch Trennzeichen getrennte Werte ein. Sie können auch das Zeichen „*“ als Platzhalter verwenden. Der folgende Prefer Anforderungsheader enthält beispielsweise nur die formatierten Werte und alle zusätzlichen Fehlerdetailanmerkungen:

Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue,Microsoft.PowerApps.CDS.ErrorDetails*"

Tipp

Verwenden Sie den Prefer: odata.include-annotations="*" Anforderungsheader, um alle Anmerkungen zurückzugeben.

Andere Überschriften

Header Value Beschreibung
CallerObjectId Microsoft Entra ID-Objekt-ID des Benutzers Verwenden Sie diesen Header, um sich als ein anderer Benutzer auszugeben, wenn der Aufrufer über die entsprechenden Rechte verfügt. Legen Sie den Wert auf die Microsoft Entra ID-Objekt-ID des Benutzers fest, dessen Identität angenommen werden soll. Diese Daten sind in der Benutzer (SystemUser) Tabelle/EntitätAzureActiveDirectoryObjectId Attribut (Spalte). Weitere Informationen: Impersonieren eines anderen Benutzers mithilfe der Web-API.
Consistency Strong Verwenden Sie diesen Header, wenn Sie über die neueste Version eines zwischengespeicherten Elements verfügen müssen. Zu den zwischengespeicherten Artikeln gehören Metadatendefinitionen, Labels, Benutzer- und Teamberechtigungen. Wenn Sie beispielsweise eine Änderung an einer Metadatendefinition, Bezeichnung oder Berechtigung anwenden und Code haben, der die neueste Definition innerhalb von 30 Sekunden nach der Änderung verwenden muss, verwenden Sie diesen Header, um sicherzustellen, dass Sie die neueste Version erhalten. Die Verwendung dieses Headers verursacht eine geringe Leistungseinbuße, verwenden Sie ihn also nicht immer.
If-Match Etag Wert
oder *
Verwenden Sie diesen Header, um optimistische Parallelität anzuwenden, um sicherzustellen, dass Sie keine Änderungen überschreiben, die jemand anderes auf dem Server vorgenommen hat, seit Sie einen Datensatz abgerufen haben. Weitere Informationen: Optimistische Parallelität anwenden und If-Match anwenden.
Sie können diesen Header auch mit * verwenden, um zu verhindern, dass ein PATCH-Vorgang einen Datensatz erstellt. Weitere Informationen: Erstellung bei Upsert verhindern.
If-None-Match null
oder *
Dieser Header sollte in allen Anfragen mit einem Wert von null verwendet werden, wie in HTTP headers beschrieben, kann aber auch genutzt werden, um zu verhindern, dass ein POST-Vorgang ein Update durchführt. Weitere Informationen: Verhindern von Updates bei Upsert und If-None-Match.
MSCRM.BypassBusinessLogicExecution CustomSync,CustomAsync Synchrone Logik muss während der Transaktion angewendet werden und kann die Leistung einzelner Vorgänge erheblich beeinträchtigen. Bei Massenvorgängen kann die zusätzliche Zeit für diese einzelnen Vorgänge den Zeitaufwand erhöhen. Verwenden Sie diesen optionalen Parameter, wenn Sie die Leistung verbessern möchten, während Massendatenvorgänge ausgeführt werden. Weitere Informationen finden Sie unter BypassBusinessLogicExecution und Umgehen benutzerdefinierter Dataverse-Logik und Verwenden von Massenvorgangsmeldungen
MSCRM.BypassCustomPluginExecution true Verwenden Sie diesen Header, wenn Sie benutzerdefinierten Plug-In-Code umgehen möchten und der Aufrufer über die prvBypassCustomPlugins Berechtigung verfügt. Weitere Informationen: Umgehen von benutzerdefinierter Geschäftslogik.
MSCRM.MergeLabels true Beim Aktualisieren von Lösungskomponenten, die Bezeichnungen enthalten, steuert diese Überschrift, ob die vorhandenen Bezeichnungen überschrieben oder die neue Bezeichnung mit vorhandenen Sprachbezeichnungen zusammengeführt werden soll. Legen Sie MSCRM.MergeLabels fest, dass true neue Bezeichnungen nur vorhandene Bezeichnungen überschreiben, wenn der Sprachcode übereinstimmt. Wenn Sie die vorhandenen Bezeichnungen überschreiben möchten, um nur die von Ihnen festgelegten Bezeichnungen einzuschließen, setzen Sie MSCRM.MergeLabels auf false.
MSCRM.SessionToken Sesson-Tokenwert Mit elastischen Tabellen können Sie Konsistenz auf Sitzungsebene erzielen, indem Sie das aktuelle Sitzungstoken mit Ihren Anforderungen übergeben. Wenn Sie das Sitzungstoken nicht einbeziehen, enthalten die Daten, die Sie abrufen, möglicherweise nicht die Datenänderungen, die Sie gerade vorgenommen haben. Arbeiten mit dem Sitzungstoken
MSCRM.SolutionUniqueName eindeutiger Name der Lösung Verwenden Sie diesen Header, wenn Sie eine Lösungskomponente erstellen und sie einer nicht verwalteten Lösung zuordnen möchten. Weitere Informationen: Erstellen und Aktualisieren von Tabellendefinitionen mithilfe der Web-API und Zuordnen einer Lösungskomponente zu einer Lösung.
MSCRM.SuppressCallbackRegistrationExpanderJob STIMMT Wenn Massendatenvorgänge auftreten, die Flows auslösen, erstellt Dataverse Systemaufträge zum Ausführen der Flows. Wenn die Anzahl der Systemaufträge groß ist, kann dies zu Leistungsproblemen für das System führen. Wenn Leistungsprobleme auftreten, können Sie die Auslösung der Flüsse mithilfe dieses optionalen Parameters umgehen. Weitere Informationen finden Sie unter Umgehung von Power Automate Flüssen und Umgehen Power Automate Flüssen
MSCRM.SuppressDuplicateDetection false Verwenden Sie diesen Header mit dem Wert false um Duplikaterkennung beim Erstellen oder Aktualisieren eines Datensatzes zu aktivieren. Weitere Informationen: Suchen Sie nach doppelten Datensätzen , und unterdrücken Sie die Duplikaterkennung.

Wenn Sie Batchvorgänge ausführen, müssen Sie in der Anforderung viele verschiedene Kopfzeilen anwenden sowie für jeden Teil, in dem der Text gesendet wird. Weitere Informationen: Ausführen von Batchvorgängen mit der Web-API.

Ermitteln von Statuscodes

Ob eine HTTP-Anforderung erfolgreich war oder nicht, die Antwort enthält einen Statuscode. Die folgende Tabelle beschreibt die Statuscodes, die von der Microsoft Dataverse Web-API zurückgegeben werden.

Code Beschreibung Typ
200 OK Erwarten Sie diesen Statuscode, wenn Ihr Vorgang Daten im Antworttext zurückgibt. Erfolg
201 Created Erwarten Sie diesen Statuscode, wenn der POST-Vorgang der Entität erfolgreich ist und Sie die return=representation Einstellung in Ihrer Anforderung angeben. Erfolg
204 No Content Erwarten Sie diesen Statuscode, wenn der Vorgang erfolgreich durchgeführt wird, jedoch keine Daten im Antworttext zurückgegeben werden. Erfolg
304 Not Modified Erwarten Sie diesen Statuscode beim Testen, ob eine Entität seit dem letzten Abrufen geändert wurde. Weitere Informationen finden Sie unter "Bedingte Abrufe". Redirection
400 BadRequest Erwarten Sie diesen Statuscode, wenn ein Argument ungültig ist. Client-Fehler
401 Unauthorized Erwarten Sie diesen Statuscode für die folgenden Fehlertypen:

- BadAuthTicket
- ExpiredAuthTicket
- InsufficientAuthTicket
- InvalidAuthTicket
- InvalidUserAuth
- MissingCrmAuthenticationToken
- MissingCrmAuthenticationTokenOrganizationName
- RequestIsNotAuthenticated
- TamperedAuthTicket
- UnauthorizedAccess
- UnManagedInvalidSecurityPrincipal
Client-Fehler
403 Forbidden Erwarten Sie diesen Statuscode für die folgenden Fehlertypen:

- AccessDenied
- AttributePermissionReadIsMissing
- AttributePermissionUpdateIsMissingDuringUpdate
- AttributePrivilegeCreateIsMissing
- CannotActOnBehalfOfAnotherUser
- CannotAddOrActonBehalfAnotherUserPrivilege
- CrmSecurityError
- InvalidAccessRights
- PrincipalPrivilegeDenied
- PrivilegeCreateIsDisabledForOrganization
- PrivilegeDenied
- unManagedinvalidprincipal
- unManagedinvalidprivilegeedepth
Client-Fehler
404 Not Found Erwarten Sie diesen Statuscode, wenn die Ressource nicht vorhanden ist. Client-Fehler
405 Method Not Allowed Dieser Fehler tritt für falsche Methoden und Ressourcenkombinationen auf. Beispielsweise können Sie weder DELETE noch PATCH bei einer Sammlung von Entitäten verwenden.

Erwarten Sie diesen Statuscode für die folgenden Fehlertypen:

- CannotDeleteDueToAssociation
- InvalidOperation
- NotSupported
Client-Fehler
412 Precondition Failed Erwarten Sie diesen Statuscode für die folgenden Fehlertypen:

- ConcurrencyVersionMismatch
- DuplicateRecord
Client-Fehler
413 Payload Too Large Erwarten Sie diesen Statuscode, wenn die Anforderung zu lang ist. Erfahren Sie mehr über Größenbeschränkungen für Anforderungs- und Antwortnutzlasten Client-Fehler
429 Too Many Requests Erwarten Sie diesen Statuscode, wenn API-Begrenzungen überschritten werden. Weitere Informationen finden Sie unter Dienstschutz-API-Grenzwerte. Client-Fehler
501 Not Implemented Erwarten Sie diesen Statuscode, wenn ein angeforderter Vorgang nicht implementiert wird. Serverfehler
503 Service Unavailable Erwarten Sie diesen Statuscode, wenn der Web-API-Service nicht verfügbar ist. Serverfehler

Parsing-Fehler in der Antwort

Die Antwort enthält Details zu Fehlern als JSON im folgenden Format.

{  
 "error":{  
  "code": "<This code is not related to the http status code and is frequently empty>",  
  "message": "<A message describing the error>"  
 }  
}  

Mehr Details mit Fehlern angeben

Einige Fehler enthalten weitere Details durch Anmerkungen. Wenn eine Anforderung den Prefer: odata.include-annotations="*" Header enthält, enthält die Antwort alle Anmerkungen, die weitere Details zu Fehlern enthalten, und eine URL, die Sie möglicherweise an bestimmte Anleitungen für den Fehler weiterleiten kann.

Entwickler, die Plug-Ins schreiben, können einige dieser Details festlegen. Angenommen, Sie haben ein Plug-In, das einen Fehler auslöst, indem Sie den InvalidPluginExecutionException(OperationStatus, Int32, String) -Konstruktor verwenden. Dieser Konstruktor akzeptiert einen OperationStatus Wert, einen benutzerdefinierten Ganzzahlfehlercode und eine Fehlermeldung.

Eine einfaches Plug-In könnte so aussehen:

namespace MyNamespace
{
    public class MyClass : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {

            // Obtain the tracing service
            ITracingService tracingService =
            (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            tracingService.Trace("Entering MyClass plug-in.");

             try
            {
                throw new InvalidPluginExecutionException(OperationStatus.Canceled, 12345, "Example Error Message.");
            }
            catch (InvalidPluginExecutionException ex)
            {
                tracingService.Trace("StackTrace:");
                tracingService.Trace(ex.StackTrace);
                throw ex;
            }
        }
    }
}

Wenn Sie dieses Plug-In bei der Nachricht "Erstellen" einer Kontoentität registrieren und die Anforderung zum Erstellen eines Kontos die odata.include-annotations="*" Einstellung enthält, sieht die Anforderung und Antwort wie im folgenden Beispiel aus:

Anforderung:

POST https://yourorg.api.crm.dynamics.com/api/data/v9.2/accounts HTTP/1.1
Content-Type: application/json;
Prefer: odata.include-annotations="*"
{
    "name":"Example Account"
}

Antwort:

HTTP/1.1 400 Bad Request
Content-Type: application/json; odata.metadata=minimal
{
    "error": {
        "code": "0x80040265",
        "message": "Example Error Message.",
        "@Microsoft.PowerApps.CDS.ErrorDetails.OperationStatus": "1",
        "@Microsoft.PowerApps.CDS.ErrorDetails.SubErrorCode": "12345",
        "@Microsoft.PowerApps.CDS.HelpLink": "http://go.microsoft.com/fwlink/?LinkID=398563&error=Microsoft.Crm.CrmException%3a80040265&client=platform",
        "@Microsoft.PowerApps.CDS.TraceText": "\r\n[MyNamespace: MyNamespace.MyClass ]\r\n[52e2dbb9-85d3-ea11-a812-000d3a122b89: MyNamespace.MyClass : Create of account] \r\n\r\n Entering MyClass plug-in.\r\nStackTrace:\r\n   at MyNamespace.MyClass.Execute(IServiceProvider serviceProvider)\r\n\r\n"
        "@Microsoft.PowerApps.CDS.InnerError.Message": "Example Error Message."
    }
}

Die folgende Tabelle beschreibt die Anmerkungen in der Antwort.

Anmerkung und Beschreibung Value
@Microsoft.PowerApps.CDS.ErrorDetails.InnerError.Message
Die in InnerError für die Ausnahme gefundene Fehlermeldung. Diese Meldung sollte mit der Fehlermeldung identisch sein, außer in bestimmten Sonderfällen, die nur für den internen Gebrauch bestimmt sind.
Example Error Message.
@Microsoft.PowerApps.CDS.ErrorDetails.OperationStatus
Der Wert von OperationStatus, der vom InvalidPluginExecutionException (OperationStatus, Int32, String)-Constructor festgelegt wird.
1
@Microsoft.PowerApps.CDS.ErrorDetails.SubErrorCode
Der Wert von SubErrorCode, der vom InvalidPluginExecutionException (OperationStatus, Int32, String)-Constructor festgelegt wird.
12345
@Microsoft.PowerApps.CDS.HelpLink
Eine URL, die Informationen zum Fehler enthält und Sie möglicherweise zu Anleitungen zur Behebung des Fehlers umleitet.
http://go.microsoft.com/fwlink/?LinkID=398563&error=Microsoft.Crm.CrmException%3a80040265&client=platform
@Microsoft.PowerApps.CDS.TraceText
Inhalt, der mithilfe der ITracingService.Trace(String, Object[])-Methode in das Plug-In-Ablaufverfolgungsprotokoll geschrieben wurde. Diese Anmerkung enthält den Stack-Trace für das Plugin, da der Plugin-Autor ihn protokolliert hat.
[MyNamespace: MyNamespace.MyClass ]
[52e2dbb9-85d3-ea11-a812-000d3a122b89: MyNamespace.MyClass :Create of account]

Entering MyClass plug-in.
StackTrace:
at MyNamespace.MyClass.Execute(IServiceProvider serviceProvider)

Hinweis

Die @Microsoft.PowerApps.CDS.HelpLink ist keine Garantie dafür, dass Sie für jeden Fehler eine Anleitung erhalten. Anleitungen können proaktiv bereitgestellt werden, aber am häufigsten wird sie reaktiv basierend darauf bereitgestellt, wie häufig der Link verwendet wird. Verwenden Sie den Link. Wenn sie keine Anleitungen bereitstellt, hilft Ihre Verwendung des Links dem Produktteam, nachzuverfolgen, dass die Benutzer weitere Anleitungen zum Fehler benötigen. Das Team kann dann Prioritäten setzen, indem es Anleitungen für die Fehler bereitstellt, die von den Benutzern am dringendsten benötigt werden. Die Ressourcen, auf die der Link verweisen kann, sind möglicherweise Dokumentationen, Links zu Communityressourcen oder externe Websites.

Wenn Sie nicht alle Anmerkungen in der Antwort empfangen möchten, können Sie angeben, welche Anmerkungen zurückgegeben werden sollen. Verwenden Sie anstelle von Prefer: odata.include-annotations="*" folgenden Wert, um nur formatierte Werte für Vorgänge zu erhalten, die Daten abrufen, und verwenden Sie den Hilfelink, wenn ein Fehler auftritt: Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue,Microsoft.PowerApps.CDS.HelpLink".

Weitere Informationen: Anforderungsanmerkungen

Eine gemeinsame Variable aus der Web-API hinzufügen

Sie können einen Zeichenfolgenwert festlegen, der für Plug-Ins im ExecutionContext in der SharedVariables-Sammlung verfügbar ist. Weitere Informationen finden Sie unter:

Siehe auch

Vorgänge mit der Web-API ausführen
Datenabfrage mit Web-API
Erstellen einer Tabellenzeile mithilfe der Web-API
Abrufen einer Tabellenzeile über die Web-API
Aktualisieren und Löschen von Tabellenzeilen über die Web-API
Vorhandene Tabellenzeilen über die Web-API zuordnen und Zuordnung wieder aufheben
Nutzen von Web-API-Funktionen
Web-API-Aktionen verwenden
Ausführen von Batchbetrieben mithilfe der Web-API
Einen anderen Benutzer mit der Web-API übernehmen
Führen Sie bedingte Vorgänge mithilfe der Web-API aus.