Fehlercodes und Fehlerbehandlung | Graph-API-Konzepte

Gilt für: Graph-API | Azure Active Directory (AD)

Für Clientanwendungen, die die Azure AD Graph-API verwenden, sollte eine Fehlerbehandlungslogik implementiert werden, um optimal auf verschiedene Umstände zu reagieren und ihren Benutzern ein bestmögliches Nutzungserlebnis zu bieten. Dieser Artikel behandelt die Fehler, die von der Azure AD Graph-API zurückgegeben werden, und bietet Hilfestellungen zu deren Behandlung.

Wichtig

Es wird dringend empfohlen, für den Zugriff auf Azure Active Directory-Ressourcen Microsoft Graph zu verwenden, nicht die Azure AD Graph-API. Wir konzentrieren unsere Entwicklungsarbeit auf Microsoft Graph, weitere Verbesserungen für die Azure AD Graph-API sind nicht geplant. Es gibt einige wenige Szenarien, in denen die Azure AD Graph-API möglicherweise noch geeignet ist. Weitere Informationen finden Sie im Office Dev Center im Blogbeitrag Microsoft Graph or the Azure AD Graph.

Behandeln von Graph-API-Fehlern

Fehlertypen

Graph-API-Fehler sind in die folgenden Kategorien unterteilt.

  • Clientfehler. Clientfehler werden durch HTTP-Statuscodes 4xx dargestellt. In diese Kategorie fallen Objekte mit ungültigen Werten, Objekte mit fehlenden Eigenschaften oder Eigenschaftswerten, Zugriffsversuche auf nicht existierende Ressourcen, Aktualisierungsversuche für schreibgeschützte Eigenschaften und Anforderungen ohne das benötigte Autorisierungstoken. Korrigieren Sie das zugrunde liegende Problem und senden Sie die Anforderung erneut, um diese Art von Fehlern zu beheben.
  • Serverfehler. Serverfehler werden durch HTTP-Statuscodes 5xx dargestellt, wie z. B. vorübergehende Verzeichnisfehler. Die meisten dieser Fehler sind vorübergehend und können durch eine Wiederholung der Anfrage behoben werden.
  • Netzwerk-/Protokollfehler. Bei Anforderung und Antwort kann eine Vielzahl netzwerkbedingter Fehler auftreten, wie z. B. Namensauflösungsfehler, vorzeitig geschlossene Verbindungen und SSL-Vermittlungsfehler. Die meisten dieser Fehler können nicht durch Wiederholungen behoben werden; stattdessen muss die zugrunde liegende Ursache korrigiert werden. Manche Fehler wie z. B. Namensauflösungsfehler oder Zeitüberschreitungen können jedoch durch eine Wiederholung der Anfrage behoben werden.

Struktur der Fehlermeldungen

Graph-API-Fehler haben einen formatierten Text, der aus einem HTTP-Statuscode, einer Nachricht und Werten besteht. Verwenden Sie in der Fehlerbehandlungslogik die Eigenschaften des Fehlertexts.

Hinweis: Nicht alle HTTP-Antworten enthalten den Text mit Code/Nachricht/Werten, da die Anforderung durch Proxy- und Gatewaydienste geleitet wird. Sie sollten daher auch eine Standardlogik implementieren, die Fehler allein anhand des HTTP-Statuscodes behandelt.

Es folgt ein Beispiel für einen HTTP 400 Request_BadRequest-Fehler.

 HTTP/1.1 400 Bad Request
 Content-Type: application/json;odata=minimalmetadata;charset=utf-8
 request-id: ddca4a7e-02b1-4899-ace1-19860901f2fc
 Date: Tue, 02 Jul 2013 01:48:19 GMT
 …
 
 {
     "odata.error" : {
         "code" : "Request_BadRequest",
         "message" : {
             "lang" : "en",
             "value" : "A value is required for property 'mailNickname' of resource 'Group'."
         },
     "values" : null
    }
 }

Jeder Meldungstext verfügt über die Eigenschaften „code“, „message“ und „values“.

  • code: Entwerfen Sie eine Fehlerbehandlungslogik, deren Verzweigungen auf Code basieren.

    "code" : "Request_BadRequest"
    
  • message: Ein Sprache-/Wert-Tupel, das eine lesbare Fehlermeldung darstellt. Der Inhalt befindet sich im value-Feld. Die Anforderung im folgenden Beispiel schlägt fehl, weil der Wert der mailNickname-Eigenschaft fehlt.

    "message" : {
         "lang" : "en",
         "value" : "A value is required for property 'mailNickname' of resource 'Group'."
    }
    
  • values: Eine Sammlung von Name-Wert-Paaren, die weitere Informationen über den Fehler enthalten. Im folgenden Beispiel sind keine Werte enthalten.

    "values" : null
    

Referenz zu Fehlercodes

HTTP-Fehlercodes

In der folgenden Tabelle sind Fehlercodes, Fehlermeldungen und Korrekturmaßnahmen aufgeführt.

Im Allgemeinen werden HTTP 500-Fehler bei Wiederholungen ausgegeben, insbesondere wenn diese über immer längere Zeitintervalle verteilt werden ("Wiederholung bei einem Backoffintervall") und wenn ein zufälliger Verteilungsfaktor vorliegt. 400er Fehler weisen auf ein Problem hin, das vor der Wiederholung behoben werden muss.

HTTP-Statuscode Fehlercode Fehlermeldung Details
400 Directory_ExpiredPageToken Der angegebene Seitentokenwert ist abgelaufen und kann nicht länger in Ihrer Anforderung verwendet werden.
400 Directory_ResultSizeLimitExceeded Größenbeschränkung des Resultsets wurde überschritten Die Anforderung kann nicht beantwortet werden, da ihr zu viele Ergebnisse zugeordnet ist. Dieser Fehler tritt nur sehr selten auf.
400 DomainVerificationCodeNotFound Fehler bei der Domänenüberprüfung, da bei der Überprüfung kein TXT-Eintrag mit übereinstimmendem Überprüfungscode gefunden wurde.
400 ObjectConflict Der Domänenname ist bereits in einer nicht überprüften Domäne in diesem Unternehmen vorhanden.
400 ObjectConflict Der Domänenname ist bereits in einer überprüften Domäne in diesem Unternehmen vorhanden.
400 ObjectInUse Die Domäne, die momentan von einem Benutzer, einer Gruppe oder einer Anwendung mit mehreren Mandanten referenziert wird, kann nicht gelöscht werden.
400 ObjectPendingDeletion Eine vorhandene Domäne, deren Löschvorgang aussteht, kann nicht überprüft werden.
400 ObjectPendingTakeover Eine Domäne, für die gerade eine Mandantenübernahme ausgeführt wird, kann nicht gelöscht werden.
400 Request_BadRequest Ungültige Anforderung. Korrigieren Sie die Anforderung, bevor Sie den Vorgang wiederholen. Weist auf einen Fehler in der Anforderung hin, z. B. ein ungültiger Eigenschaftswert oder ein nicht unterstütztes Abfrageargument. Korrigieren Sie die Anforderung, bevor Sie den Vorgang wiederholen.
400 Request_DataContractVersionMissing Der Parameter für die Datenvertragsversion fehlt. Schließen Sie „api-version“ als Abfrageparameter in sämtliche Ihrer Anforderungen ein.
400 Request_InvalidDataContractVersion Die angegebene „api-version“ ist ungültig. Der Wert muss mit einer unterstützten Version übereinstimmen.
400 Request_InvalidRequestUrl Die Anforderungs-URL war ungültig. Die Anforderung sollte dem Format „/tenantdomainname/Entity“ oder „/$metadata“ folgen. Der Domänenname für den Mandanten kann ein überprüfter oder ein nicht überprüfter Domänenname oder eine Kontext-ID sein.
400 Request_UnsupportedQuery Die GET-Anforderung wird nicht unterstützt. Beheben Sie die Anforderungsparameter, und versuchen Sie es erneut.
401 Authentication_ExpiredToken Das Zugriffstoken ist abgelaufen. Verlängern Sie das Token, bevor Sie die Anforderung erneut senden. Das Zugriffstoken ist abgelaufen. Verlängern Sie das Token, und senden Sie die Anforderung erneut.
401 Authentication_MissingOrMalformed Das Zugriffstoken fehlt oder ist fehlerhaft. Der access_token-Wert im Autorisierungsheader fehlt oder ist fehlerhaft. Dieser Wert ist erforderlich. Verwenden Sie den Wert im Authentifizierungstoken.
401 Authorization_IdentityDisabled Der aufrufende Anwendungsprinzipal ist deaktiviert. Der im Zugriffstoken angegebene Prinzipal befindet sich im Verzeichnis, ist jedoch deaktiviert. Aktivieren Sie das Konto im Verzeichnis erneut, und wiederholen Sie den Vorgang.
401 Authorization_IdentityNotFound Die Identität der aufrufenden Anwendung konnte nicht eingerichtet werden. Der im Zugriffstoken angegebene Prinzipal wurde nicht im Verzeichnis gefunden. Möglicherweise ist das Token veraltet, oder der Prinzipal wurde aus dem Verzeichnis gelöscht, oder die Verzeichnissynchronisierung ist verzögert.
403 Authentication_Unauthorized Nicht autorisierte Anforderung. Das Token enthält ungültige oder nicht unterstützte Ansprüche (Claims). Rufen Sie das Anforderungstoken erneut ab, und wiederholen Sie dann die Anforderung.
403 Authorization_RequestDenied Die angegebenen Anmeldeinformationen verfügen nicht über ausreichende Berechtigungen, um diese Anforderung zu senden. Die Anforderung wird aufgrund unzureichender Berechtigungen verweigert. Ein Prinzipal, der kein Administrator ist, hat beispielsweise keine Löschberechtigung für eine Ressource.
403 Directory_QuotaExceeded Der Grenzwert des Verzeichnisobjektkontingents für {tenantName} wurde überschritten. Bitten Sie den Administrator, die Kontingentgrenze heraufzusetzen oder Objekte zu löschen, um Kontingente freizugeben. Ein Verzeichniskontingent wurde überschritten. Möglicherweise verfügt der Mandant über zu viele Objekte, oder die Objekte weisen zu viele Werte auf. Eine Überschreitung kann auch auftreten, wenn zu viele Objekte für den Prinzipal erstellt werden. Erhöhen Sie die maximal zulässige Objektanzahl für den Mandanten oder Prinzipal, oder verringern Sie die Anzahl der in der Create-/Update-Anforderung enthaltenen Werte.
404 Directory_ObjectNotFound Die Unternehmensinformationen können nicht aus dem Verzeichnis gelesen werden.
404 Request_ResourceNotFound Die Ressource {resource} oder eines der abgefragten reference-property-Objekte ist nicht vorhanden. Die vom URI angegebene Ressource ist nicht vorhanden. Ändern Sie den Wert, und wiederholen Sie die Anforderung.
409 Request_MultipleObjectsWithSameKeyValue Als Ergebnis wurde eine einzige Ressource erwartet, aber es wurden mehrere Ressourcen gefunden. Aktualisieren Sie die Objekte, um den Konflikt aufzulösen. Dieser Fehler kann auftreten, wenn mindestens zwei Objekte denselben Schlüsselwert aufweisen, d.h. zwei Benutzer verwenden denselben UserPrincipalName.
429 Zu viele Anforderungen. Dieser Fehler tritt auf, wenn Anforderungen gedrosselt werden. Im Retry-After-Wert des Antwortheaders wird eine empfohlene Wartezeit zurückgegeben. Wiederholen Sie die Anforderung nach der empfohlenen Anzahl von Sekunden.
500 Service_InternalServerError Ein interner Serverfehler ist aufgetreten. Interner Serverfehler beim Verarbeiten der Anforderung.
502 [Alle] “... Dienst nicht verfügbar..." Ein Server, der als Gateway oder Proxy fungiert, hat bei der Verarbeitung der Anforderung einen Fehler von einem anderen Server festgestellt. Warten Sie einige Minuten, und wiederholen Sie dann die Anforderung.
503 Directory_ConcurrencyViolation Fehler aufgrund gleichzeitiger Anforderungen an den Mandanten. Warten Sie kurz, und versuchen Sie es noch mal.
503 Fehler bei der DNS-Überprüfung (Hinweis: Kann durch verschiedene Ursachen ausgelöst werden, z. B. weil der DNS momentan nicht betriebsbereit ist).
Authentication_Unknown Interner Serverfehler. Dieser Fehler wird verwendet, wenn andere Fehlercodes nicht zutreffend sind.
Authentication_UnsupportedTokenType Der dargestellte Tokentyp wird nicht verarbeitet. Nur Trägertoken werden unterstützt. Der Tokentyp wird nicht unterstützt. Ändern Sie den Tokentyp, bevor Sie die Anforderung wiederholen.
Directory_BindingRedirection Mandanteninformationen sind lokal nicht verfügbar. Verwenden Sie die folgenden URLs, um die Informationen abzurufen. Wenn die Mandantenpartition nicht im Datencenter verfügbar ist, müssen Clients eine Verbindung mit dem in der Antwort zurückgegebenen URI herstellen.
Directory_BindingRedirectionInternalServerError Mandanteninformationen sind lokal nicht verfügbar. Beim Versuch, die Liste der nächstliegenden Datencenter-Endpunkte aufzufüllen, hat der Server einen internen Fehler festgestellt. Wenn eine Bindungsumleitung auftritt, wird die Liste der nächstgelegenen Datencenter-Endpunkte für den Dienst aufgefüllt. Dieser Fehler weist auf eine Ausnahme beim Auffüllen der Liste hin. Wiederholen Sie die Abfrage.
Directory_CompanyNotFound Die Unternehmensinformationen können nicht aus dem Verzeichnis gelesen werden. Fehler beim Laden von Unternehmensinformationen aus dem Verzeichnisdienst.
Directory_ReplicaUnavailable Das bevorzugte Replikat ist nicht verfügbar. Wiederholen Sie den Vorgang ohne Header für den Replikatsitzungsschlüssel. Lassen Sie den x-ms-replica-session-key-Header weg, und wiederholen Sie den Vorgang.
Headers_DataContractVersionMissing Der Header der Datenvertragsversion fehlt. Schließen Sie x-ms-dirapi-data-contract-version in die Anforderung ein. Die Clientvertragsversion fehlt in der Anforderung.
Headers_HeaderNotSupported Der Header '{0}' wird derzeit nicht unterstützt. Die Anforderung enthält einen nicht unterstützten HTTP-Header. Ändern Sie den Header, und wiederholen Sie die Anforderung.
Request_InvalidReplicaSessionKey Der bereitgestellte Replikatsitzungsschlüssel ist ungültig. Korrigieren Sie den Replikatsitzungsschlüssel, und wiederholen Sie die Anforderung.
Request_ThrottledPermanently Die Anforderung wird dauerhaft gedrosselt. Wenden Sie sich zur Problembehebung an den Support. Der Mandant hat wiederholt den Grenzwert für die Tokenanforderungsrate überschritten. Anforderungen vom Mandanten werden zurückgewiesen, bis der Dienst erneut ausgehandelt wurde. Wenden Sie sich an den Microsoft Support, um Hilfe zu erhalten.

Zusätzliche Ressourcen