Codes et réponses d’erreur courants
Les erreurs dans l’API OneDrive sont renvoyées à l’aide de codes d’état HTTP standard, ainsi que d’un objet de réponse d’erreur JSON. Les codes d’état HTTP suivants doivent être prévus.
Code d’état | Message d’état | Description |
---|---|---|
400 | Demande incorrecte (Bad Request) | Impossible de traiter la demande car elle est de format non valide ou incorrecte. |
401 | Non autorisé (Unauthorized) | Informations d’authentification nécessaires manquantes ou non valides pour la ressource. |
403 | Interdit | L’accès à la ressource demandée est refusé. L’utilisateur ne dispose peut-être pas des autorisations suffisantes. |
404 | Introuvable (Not Found) | La ressource demandée n’existe pas. |
405 | Méthode non autorisée (Method Not Allowed) | La méthode HTTP dans la demande n’est pas autorisée sur la ressource. |
406 | Non acceptable (Not Acceptable) | Ce service ne prend pas en charge le format demandé dans l’en-tête Accept. |
409 | Conflit | L’état actuel n’est pas compatible avec les attentes de la demande. Par exemple, le dossier parent spécifié n’existe peut-être pas. |
410 | Non disponible (Gone) | La ressource demandée n’est plus disponible sur le serveur. |
411 | Longueur requise (Length Required) | Un en-tête Content-Length est requise sur la demande. |
412 | Échec de la condition préalable (Precondition Failed) | Une condition préalable fournie dans la demande (un en-tête if-match, par exemple) ne correspond pas à l’état actuel de la ressource. |
413 | Entité de demande trop grande (Request Entity Too Large) | La taille de la demande dépasse la limite maximale. |
415 | Type de support non pris en charge (Unsupported Media Type) | Le type de contenu de la demande est un format qui n’est pas pris en charge par le service. |
416 | La gamme demandée ne peut pas être satisfaite (Requested Range Not Satisfiable) | La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible. |
422 | Impossible de traiter l’entité (Unprocessable Entity) | Impossible de traiter la demande car elle est sémantique incorrecte. |
429 | Trop de demandes (Too Many Requests) | L’application cliente a été limitée et ne doit pas tenter de répéter la demande tant qu’un certain délai ne s’est pas écoulé. |
500 | Erreur interne du serveur (Internal Server Error) | Une erreur du serveur interne s’est produite lors du traitement de la demande. |
501 | Non implémenté (Not Implemented) | La fonctionnalité demandée n’est pas implémentée. |
503 | Service non disponible | Le service est temporairement indisponible. Vous pouvez répéter la demande après un délai. Il peut y avoir un en-tête Retry-After. |
507 | Stockage insuffisant (Insufficient Storage) | Le quota de stockage maximum a été atteint. |
509 | Limite de bande passante dépassée | Votre application a été limitée car elle a dépassé la capacité maximale de la bande passante. Votre application peut renouveler la demande une fois qu’un délai plus long s’est écoulé. |
La réponse d’erreur est un seul objet JSON qui contient une propriété unique nommée error. Cet objet inclut tous les détails de l’erreur. Vous pouvez utiliser les informations renvoyées ici à la place, ou en plus du code d’état HTTP renvoyé. Voici un exemple de corps d’erreur JSON complet.
{
"error": {
"code": "invalidRange",
"message": "Uploaded fragment overlaps with existing data.",
"innererror": {
"code": "fragmentOverlap"
}
}
}
Propriété du code
La propriété du code
contient l’une des 15 valeurs possibles. Les applications doivent être prêtes à gérer l’une de ces erreurs.
Code | Description |
---|---|
accessDenied | L’appelant n’est pas autorisé à effectuer l’action. |
activityLimitReached | L’application ou l’utilisateur a été limité(e). |
generalException | Une erreur inconnue s’est produite. |
invalidRange | La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible. |
invalidRequest | La demande est de format non valide ou incorrecte. |
itemNotFound | La ressource est introuvable. |
malwareDetected | Un programme malveillant a été détecté dans la ressource demandée. |
nameAlreadyExists | Le nom de l’élément spécifié existe déjà. |
notAllowed | L’action n’est pas autorisée par le système. |
notSupported | La demande n’est pas prise en charge par le système. |
resourceModified | La ressource mise à jour a changé depuis que l’appelant l’a lue, généralement une discordance eTag. |
resyncRequired | Le jeton delta n’est plus valide et l’application doit rétablir l’état de synchronisation. |
serviceNotAvailable | Le service n’est pas disponible. Réessayez la demande après un délai. Il peut y avoir un en-tête Retry-After. |
quotaLimitReached | L’utilisateur a atteint sa limite de quota. |
unauthenticated | L’appelant n’est pas authentifié. |
L’objet innererror
peut contenir de manière récursive plus d’objets innererror
avec des codes d’erreur supplémentaires et plus spécifiques. Lors de la gestion d’une erreur, les applications doivent mettre tous les codes d’erreur disponibles en boucle et utiliser le code le plus détaillé qu’elles comprennent. Certains codes plus détaillés sont répertoriés en bas de cette page.
Pour vérifier qu’un objet d’erreur est une erreur que vous attendez, vous devez effectuer une boucle sur les objets innererror
pour rechercher les codes d’erreur attendus. Par exemple :
public bool IsError(string expectedErrorCode)
{
OneDriveInnerError errorCode = this.Error;
while (null != errorCode)
{
if (errorCode.Code == expectedErrorCode)
return true;
errorCode = errorCode.InnerError;
}
return false;
}
Pour obtenir un exemple complet permettant de gérer correctement des erreurs, consultez la page relative à la gestion des codes OneDrive.
La propriété message
à la racine contient un message d’erreur destiné au développeur. Les messages d’erreur ne sont pas localisés et ne doivent pas être affichés directement pour l’utilisateur. Lors de la gestion des erreurs, votre code ne doit pas utiliser les valeurs message
, car elles sont susceptibles de changer à tout moment et contiennent souvent des informations dynamiques propres à la demande ayant échoué. Vous devez coder uniquement par rapport aux codes d’erreur renvoyés dans les propriétés code
.
Pour plus d’informations sur la ressource renvoyée dans la réponse d’erreur, consultez la rubrique Type de ressource d’erreur.
Codes d’erreur détaillés
Voici quelques erreurs supplémentaires que votre application peut rencontrer dans les objets imbriqués innererror
. Les applications ne sont pas tenues de les gérer, mais le peuvent si elles le souhaitent. Le service peut ajouter de nouveaux codes d’erreur ou arrêter de retourner les anciens à tout moment. Il est donc important que toutes les applications puissent gérer les 15 de base ci-dessus.
Code | Description |
---|---|
accessRestricted | L’accès est limité au propriétaire de l’élément. |
cannotSnapshotTree | Impossible d’obtenir un instantané delta cohérent. Essayez à nouveau ultérieurement. |
childItemCountExceeded | La limite maximale du nombre d’éléments enfants a été atteinte. |
entityTagDoesNotMatch | ETag ne correspond pas à la valeur de l’élément actuelle. |
fragmentLengthMismatch | La taille totale déclarée pour ce fragment est différente de celle de la session de téléchargement. |
fragmentOutOfOrder | Le fragment téléchargé ne fonctionne pas. |
fragmentOverlap | Le fragment téléchargé remplace les données existantes. |
invalidAcceptType | Type d’acceptation non valide. |
invalidParameterFormat | Format de paramètre non valide. |
invalidPath | Le nom contient des caractères non valides. |
invalidQueryOption | Option de requête non valide. |
invalidStartIndex | Index de début non valide. |
lockMismatch | Le jeton de verrouillage ne correspond pas au verrouillage existant. |
lockNotFoundOrAlreadyExpired | Il n’existe actuellement aucun verrou non expiré sur l’élément. |
lockOwnerMismatch | L’ID du propriétaire du verrouillage ne correspond pas à l’ID fourni. |
malformedEntityTag | Le format de l’en-tête ETag est incorrect. Les en-têtes ETag doivent être des chaînes entre guillemets. |
maxDocumentCountExceeded | La limite maximale sur le nombre de documents est atteinte. |
maxFileSizeExceeded | La taille maximale du fichier est dépassée. |
maxFolderCountExceeded | La limite maximale sur le nombre de dossiers est atteinte. |
maxFragmentLengthExceeded | La taille maximale du fichier est dépassée. |
maxItemCountExceeded | La limite maximale sur le nombre d’éléments est atteinte. |
maxQueryLengthExceeded | La longueur de requête maximale est dépassée. |
maxStreamSizeExceeded | La taille maximale de flux est dépassée. |
parameterIsTooLong | La longueur maximale du paramètre est dépassée. |
parameterIsTooSmall | Le paramètre est inférieur à la valeur minimale. |
pathIsTooLong | Le chemin d’accès dépasse la longueur maximale. |
pathTooDeep | La limite de profondeur de hiérarchie de dossier est atteinte. |
propertyNotUpdateable | La propriété ne peut pas être mise à jour. |
resyncApplyDifferences | Resynchronisation requise. Remplacez les éléments locaux par la version du serveur (y compris les suppressions) si vous êtes sûr que le service était à jour avec vos modifications locales lors de la dernière synchronisation. Téléchargez les modifications locales que le serveur ignore. |
resyncRequired | La resynchronisation est requise. |
resyncUploadDifferences | Resynchronisation requise. Téléchargez les éléments locaux que le service n’a pas renvoyés, et téléchargez les fichiers qui diffèrent de la version du serveur (tout en conservant les deux copies si vous ne savez pas quelle est la plus récente). |
serviceNotAvailable | Le serveur ne peut pas traiter la demande actuelle. |
serviceReadOnly | La ressource est temporairement en lecture seule. |
throttledRequest | Trop de demandes. |
tooManyResultsRequested | Trop de résultats demandés. |
tooManyTermsInQuery | Trop de termes dans la requête. |
totalAffectedItemCountExceeded | L’opération n’est pas autorisée, car le nombre d’éléments concernés dépasse le seuil. |
truncationNotAllowed | La troncation des données n’est pas autorisée. |
uploadSessionFailed | La session de téléchargement a échoué. |
uploadSessionIncomplete | La session de téléchargement est incomplète. |
uploadSessionNotFound | Session de téléchargement introuvable. |
virusSuspicious | Ce document est suspect et contient peut-être un virus. |
zeroOrFewerResultsRequested | Zéro résultat ou moins demandés. |