Codici errore e gestione degli errori | Concetti relativi all'API Graph
Si applica a: API Graph | Azure Active Directory (AD)
Le applicazioni client che usano l'API Azure Active Directory (AD) Graph devono implementare la logica di gestione degli errori per reagire nel modo più appropriato a condizioni variabili e offrire la migliore esperienza possibile ai clienti. Questo argomento illustra i tipi di errori restituiti dal'API di Azure AD Graph e fornisce linee guida generali su come gestirli.
Importante
Per accedere alle risorse di Azure Active Directory è fortemente consigliabile usare Microsoft Graph anziché l'API di Azure AD Graph. Le attività di sviluppo Microsoft sono ora concentrate su Microsoft Graph e non sono previsti altri miglioramenti per l'API di Azure AD Graph. Può essere ancora opportuno usare questa API in un numero molto limitato di scenari. Per altre informazioni, vedere il post di blog Microsoft Graph or the Azure AD Graph (Microsoft Graph o Azure AD Graph) in Office Developer Center.
Gestione degli errori dell'API Graph
Tipi di errori
Gli errori dell'API Graph si verificano nelle categorie seguenti.
- Errori del client. Gli errori del client sono rappresentati dai codici di stato HTTP della serie 400. Includono oggetti con valori non validi, oggetti in cui mancano proprietà o valori di proprietà obbligatori, tentativi di accesso a risorse non esistenti, tentativi di aggiornamento di proprietà di sola lettura e omissione dei token di autorizzazione necessari. Per risolvere questi errori, risolvere innanzitutto il problema sottostante prima di inviare di nuovo la richiesta.
- Errori del server. Gli errori del server sono rappresentati dai codici di stato HTTP della serie 500, come ad esempio un errore della directory temporaneo. In genere si tratta di errori temporanei che possono essere risolti inviando di nuovo la richiesta.
- Errori di rete/protocollo. Durante l'invio di una richiesta o la ricezione di una risposta, possono verificarsi numerosi errori relativi alla rete, ad esempio errori di risoluzione del nome host, connessioni chiuse prematuramente ed errori di negoziazione SSL. La maggior parte di questi errori non si risolve con un nuovo tentativo in quanto è necessario risolvere il problema sottostante. Alcuni errori, tuttavia, come ad esempio gli errori di risoluzione del nome host o i timeout, potrebbero risolversi inviando di nuovo la richiesta.
Struttura dei messaggi di errore
Gli errori dell'API Graph presentano un corpo formattato composto da un codice di stato HTTP, un messaggio e i valori. Usare le proprietà del corpo della risposta dell'errore nella logica di gestione degli errori.
Nota: alcune risposte HTTP potrebbero tuttavia non includere il corpo della risposta con codice, messaggio e valori perché la richiesta è instradata tramite servizi proxy e gateway. Accertarsi di includere la logica predefinita in grado di gestire gli errori solo in base al codice di stato HTTP.
Di seguito è riportato un errore HTTP 400 Request_BadRequest.
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
}
}
Ogni corpo del messaggio include le proprietà code, message e values.
Code: progettare la logica di gestione degli errori in base al codice.
"code" : "Request_BadRequest"
Message: tupla linguaggio-valore che rappresenta un messaggio di errore leggibile. Il contenuto si trova nel campo value. Nell'esempio seguente la richiesta non riesce perché manca il valore della proprietà mailNickname.
"message" : { "lang" : "en", "value" : "A value is required for property 'mailNickname' of resource 'Group'." }
Values: raccolta di coppie nome-valore che fornisce altre informazioni sulla natura dell'errore. Nell'esempio seguente non è incluso alcun valore.
"values" : null
Informazioni di riferimento per i codici di errore
Codici di errore HTTP
La tabella seguente elenca i codici errore e i messaggi di errore dell'API Graph e le azioni da eseguire per correggere gli errori.
In genere gli errori serie HTTP 500 si risolvono con la ripetizione dei tentativi, preferibilmente distribuiti in intervalli di tempo sempre più lunghi ("tentativo con un intervallo di backoff") e con un fattore di distribuzione casuale. Gli errori serie 400 indicano un problema che deve essere corretto prima di ritentare.
Codice di stato HTTP | Codice errore | Messaggio di errore | Dettagli |
---|---|---|---|
400 | Directory_ExpiredPageToken | Il valore token della pagina specificato è scaduto e non può più essere incluso nella richiesta. | |
400 | Directory_ResultSizeLimitExceeded | Il limite delle dimensioni del risultato è stato superato | La richiesta non può essere eseguita perché è associata a un numero eccessivo di risultati. Questo errore si verifica molto raramente. |
400 | DomainVerificationCodeNotFound | Impossibile verificare il dominio perché il processo di verifica non riesce a trovare il record TXT con il codice di verifica corrispondente. | |
400 | ObjectConflict | Il nome di dominio esiste già in un dominio non verificato della società. | |
400 | ObjectConflict | Il nome di dominio esiste già in un dominio verificato della società. | |
400 | ObjectInUse | Impossibile eliminare il dominio a cui attualmente fa riferimento un utente, un gruppo o un'applicazione multi-tenant | |
400 | ObjectPendingDeletion | Impossibile verificare un dominio esistente in attesa di eliminazione. | |
400 | ObjectPendingTakeover | Impossibile eliminare un dominio durante il processo di acquisizione di un tenant | |
400 | Request_BadRequest | Richiesta non valida. Correggere la richiesta prima di ritentare. | Indica un errore nella richiesta, ad esempio un valore di proprietà non valido o un argomento di query non supportato. Correggere la richiesta prima di ritentare. |
400 | Request_DataContractVersionMissing | Manca il parametro della versione del contratto dati. Includere il parametro api-version come parametro di query in tutte le richieste. | |
400 | Request_InvalidDataContractVersion | Il parametro api-version specificato non è valido. Il valore deve corrispondere esattamente a una versione supportata. | |
400 | Request_InvalidRequestUrl | L'URL della richiesta non è valido. La richiesta deve essere /tenantdomainname/Entity or /$metadata. Il nome di dominio tenant può essere un qualsiasi nome di dominio verificato, non verificato o ID contesto. | |
400 | Request_UnsupportedQuery | La richiesta GET non è supportata. Correggere i parametri della richiesta e riprovare. | |
401 | Authentication_ExpiredToken | Il token di accesso è scaduto. Rinnovarlo prima di inviare la richiesta. | Il token di accesso è scaduto. Rinnovare il token e inviare nuovamente. |
401 | Authentication_MissingOrMalformed | Token di accesso mancante o in formato non valido. | Il valore access_token nell'intestazione di autorizzazione manca o presenta un formato non valido. Questo valore è obbligatorio. Utilizzare il valore del token di autenticazione. |
401 | Authorization_IdentityDisabled | L'entità di applicazione chiamante è disabilitata. | L'entità specificata nel token di accesso è presente nella directory, ma è disabilitata. Riabilitare l'account nella directory e riprovare. |
401 | Authorization_IdentityNotFound | Impossibile stabilire l'identità dell'applicazione chiamante. | L'entità specificata nel token di accesso non è stata trovata nella directory. Questa situazione potrebbe verificarsi perché il token non è aggiornato, l'entità è stata eliminata dalla directory o la sincronizzazione della directory è posticipata. |
403 | Authentication_Unauthorized | Richiesta non autorizzata. | Il token contiene richieste non valide o non supportate. Ottenere nuovamente il token di richiesta e quindi ripetere la richiesta. |
403 | Authorization_RequestDenied | Le credenziali specificate non dispongono di privilegi sufficienti per eseguire la richiesta. | La richiesta viene negata a causa di privilegi non sufficienti. Ad esempio, un'entità non amministrativa non dispone delle autorizzazioni per eliminare una risorsa. |
403 | Directory_QuotaExceeded | Il limite di quota dell'oggetto directory per {tenantName} è stato superato. Chiedere all'amministratore di aumentare il limite di quota o eliminare oggetti per ridurre la quota utilizzata. | Quota di directory superata. Il tenant potrebbe contenere troppi oggetti o gli oggetti potrebbero contenere troppi valori. Questo si verifica anche quando vengono creati troppi oggetti per l'entità. Aumentare il valore massimo del numero di oggetti consentito per il tenant o l'entità oppure ridurre il numero di valori incluso nella richiesta o nell'aggiornamento. |
404 | Directory_ObjectNotFound | Impossibile leggere le informazioni sulla società dalla directory. | |
404 | Request_ResourceNotFound | La risorsa {resource} non esiste o uno degli oggetti della proprietà riferimento su cui viene eseguita la query non è presente. | La risorsa identificata dall'URI non esiste. Esaminare il valore e ripetere la richiesta. |
409 | Request_MultipleObjectsWithSameKeyValue | Prevista una risorsa singola per il risultato, ma sono state trovate più risorse. Aggiornare l'oggetto per risolvere il conflitto. | Questo errore può verificarsi quando due o più oggetti hanno lo stesso valore chiave, ad esempio se due utenti hanno lo stesso valore di UserPrincipalName. |
429 | Troppe richieste. | Questo errore si verifica quando le richieste sono limitate. Nel valore Retry-After dell'intestazione della risposta viene restituito un tempo di attesa consigliato. Ripetere la richiesta dopo il numero consigliato di secondi di attesa. | |
500 | Service_InternalServerError | Errore interno del server. | Errore interno del server durante l'elaborazione della richiesta. |
502 | [All] | “... Servizio non disponibile..." | Un server che funge da gateway o proxy ha rilevato un errore da un altro server durante l'elaborazione della richiesta. Attendere alcuni minuti e quindi ripetere la richiesta. |
503 | Directory_ConcurrencyViolation | Errore dovuto a richieste simultanee al tenant. Attendere alcuni istanti e riprovare. | |
503 | Errore durante la verifica del DNS (nota: può essere causato da vari motivi, ad esempio il DNS non attivo). | ||
Authentication_Unknown | Errore interno del server. | Questo codice di errore viene utilizzato quando non si applicano altri codici di errore. | |
Authentication_UnsupportedTokenType | Il tipo di token presentato non è gestito. Solo i token di connessione sono supportati. | Tipo di token non supportato. Controllare il tipo di token prima di ritentare la richiesta. | |
Directory_BindingRedirection | Le informazioni sul tenant non sono disponibili localmente. Utilizzare i seguenti URL per ottenere le informazioni. | Se la partizione di inquilino non è disponibile nei datacenter, i client devono connettersi all'URL restituito nella risposta. | |
Directory_BindingRedirectionInternalServerError | Le informazioni sul tenant non sono disponibili localmente. Il server ha rilevato un errore interno durante il tentativo di popolare gli endpoint di datacenter più vicini. | Quando si verifica un'eccezione di reindirizzamento di associazione, l'elenco degli endpoint di datacenter più vicini viene popolato per il servizio. Questo errore indica un'eccezione durante il popolamento dell'elenco. Provare a eseguire nuovamente la query. | |
Directory_CompanyNotFound | Impossibile leggere le informazioni sulla società dalla directory. | Errore durante il caricamento delle informazioni sulla società dal servizio directory. | |
Directory_ReplicaUnavailable | La replica preferita non è disponibile. Ripetere l'operazione senza alcuna intestazione della chiave della sessione di replica. | Omettere l'intestazione x-ms-replica-session-key e riprovare. | |
Headers_DataContractVersionMissing | Intestazione della versione del contratto dati mancante. Includere x-ms-dirapi-data-contract-version nella richiesta. | Versione del contratto del client mancante nella richiesta. | |
Headers_HeaderNotSupported | L'intestazione {0} non è attualmente non supportata. | La richiesta contiene un'intestazione HTTP non supportata. Modificare l'intestazione e ripetere la richiesta. | |
Request_InvalidReplicaSessionKey | La chiave della sessione di replica specificata non è valida. | Correggere la chiave della sessione di replica e ripetere la richiesta. | |
Request_ThrottledPermanently | La richiesta è limitata in modo permanente. Chiamare il supporto tecnico per risolvere il problema. | Il tenant ha superato ripetutamente e in modo persistente il limite di frequenza della richiesta di token. Le richieste dal tenant vengono rifiutate finché il servizio non viene rinegoziato. Contattare il supporto tecnico Microsoft per assistenza. |
Risorse aggiuntive
- Azure AD Graph API reference (Informazioni di riferimento sull'API di Azure AD Graph)