Exceptions Azure Relay

Cet article répertorie certaines exceptions pouvant être générées par les API Azure Relay. Cette référence est susceptible de changer, donc consultez-la régulièrement.

Catégories d'exceptions

Les API Relay génèrent des exceptions entrant dans les catégories suivantes. Sont également répertoriées les actions suggérées que vous pouvez prendre pour aider à résoudre les exceptions.

Types d'exceptions

Le tableau suivant répertorie les types d’exceptions de la messagerie et leurs causes. Il répertorie également des actions suggérées que vous pouvez prendre pour aider à résoudre les exceptions.

Type d’exception Description Action suggérée Remarques sur la nouvelle tentative automatique ou immédiate
Délai d'expiration Le serveur n’a pas répondu à l’opération demandée dans le délai spécifié, qui est contrôlé par le paramètre OperationTimeout. Le serveur peut avoir terminé l’opération demandée. Cela peut se produire en raison de retards de réseau ou d’autres infrastructures. Vérifiez la cohérence de l’état du système, puis réessayez si nécessaire. Consultez TimeoutException. Dans certains cas, l'exécution d'une nouvelle tentative peut aider ; ajouter une logique de nouvelle tentative au code.
Opération non valide L’opération utilisateur demandée n’est pas autorisée sur le serveur ou le service. Consultez le message de l'exception pour obtenir plus d'informations. Vérifiez le code et consultez la documentation. Vérifiez que l’opération demandée est valide. La nouvelle tentative ne résout pas le problème.
Opération annulée Une tentative est effectuée pour appeler une opération sur un objet qui a déjà été fermé, abandonné ou supprimé. Dans de rares cas, la transaction ambiante est déjà supprimée. Vérifiez le code et veillez à ce qu’il n’appelle pas d’opérations sur un objet supprimé. La nouvelle tentative ne résout pas le problème.
Accès non autorisé L’objet TokenProvider n’a pas pu acquérir de jeton, le jeton n’est pas valide ou le jeton ne contient pas les revendications requises pour effectuer l’opération. Vérifiez que le fournisseur de jetons est créé avec les valeurs correctes. Vérifiez la configuration du service de contrôle d'accès (ACS). Dans certains cas, l'exécution d'une nouvelle tentative peut aider ; ajouter une logique de nouvelle tentative au code.
Exception d’argument
Argument Null
Argment hors plage
Un ou plusieurs des problèmes suivants se sont produits :
Un ou plusieurs des arguments fournis à la méthode ne sont pas valides.
L’URI fourni à NamespaceManager ou Create contient un ou plusieurs segments de chemin d’accès.
Le schéma d’URI fourni à NamespaceManager ou Ceate n’est pas valide.
La valeur de la propriété est supérieure à 32 ko.
Vérifiez le code appelant et assurez-vous que les arguments sont corrects. La nouvelle tentative ne résout pas le problème.
Serveur occupé Le service n’est pas en mesure de traiter la demande pour l’instant. Le client peut attendre pendant un certain temps, puis recommencer l'opération. Le client peut réessayer après un intervalle spécifique. Si une nouvelle tentative provoque une exception différente, vérifiez le comportement de nouvelle tentative de cette exception.
Quota dépassé L'entité de messagerie a atteint sa taille maximale autorisée. Créez de l’espace dans l’entité en recevant des messages à partir de l’entité ou de ses files d’attente secondaires. Consultez QuotaExceededException. Une nouvelle tentative peut aider si des messages ont été supprimés entre-temps.
Taille des messages dépassée Une charge utile de message dépasse la limite de 256 Ko. Notez que la limite de 256 Ko correspond à la taille totale du message. Celle-ci peut inclure des propriétés système et toute surcharge Microsoft .NET. Réduisez la taille de la charge utile de message, puis recommencez l'opération. La nouvelle tentative ne résout pas le problème.

QuotaExceededException

QuotaExceededException indique que le quota d’une entité spécifique a été dépassé.

Pour Relay, cette exception encapsule l’exception System.ServiceModel.QuotaExceededException, qui indique que le nombre maximal d’écouteurs est dépassé pour ce point de terminaison. Elle est indiquée dans la valeur MaximumListenersPerEndpoint du message d’exception.

TimeoutException

Une TimeoutException indique qu’une opération lancée par l’utilisateur dépasse le délai d’expiration de l’opération.

Vérifiez la valeur de la propriété ServicePointManager.DefaultConnectionLimit. Atteindre cette limite peut également entraîner une exception TimeoutException.

Pour Relay, vous pouvez recevoir des exceptions de délai d’attente lors de la première ouverture d’une connexion d’expéditeur de relais. Deux causes courantes peuvent être à l’origine de cette exception :

  • La valeur OpenTimeout est peut-être trop petite (même d’une fraction de seconde).
  • Un écouteur de relais local n’est peut-être pas réactif (ou peut rencontrer des problèmes de règles de pare-feu interdisant aux écouteurs d’accepter de nouvelles connexions client) et la valeur OpenTimeout est inférieure à environ 20 secondes.

Exemple :

'System.TimeoutException’: The operation did not complete within the allotted timeout of 00:00:10.
The time allotted to this operation may have been a portion of a longer timeout.

Causes courantes

Deux causes courantes peuvent être à l’origine de cette erreur :

  • Configuration incorrecte

    Le délai d’expiration de l’opération est peut-être trop court pour un bon fonctionnement. La valeur par défaut du délai d'expiration de l'opération dans le Kit de développement logiciel (SDK) client est de 60 secondes. Vérifiez si la valeur dans votre code est définie sur une valeur trop petite. Notez que l’utilisation du processeur et la condition du réseau peuvent affecter le temps nécessaire pour terminer une opération. Il est déconseillé de définir un délai d’expiration de l’opération sur une valeur très faible.

  • Erreur de service temporaire

    IL arrive parfois que le service Relay subisse des retards dans le traitement des requêtes. Cela peut se produire, par exemple, pendant des périodes de trafic élevé. S’il se produit, réessayez votre opération après un délai, jusqu’à ce que l’opération réussisse. Si la même opération échoue encore après plusieurs tentatives, consultez le Site de statut des services Azure pour voir s’il existe des interruptions de service connues.

Connecter ionLostException - NameRenewalFailed

Symptômes

Votre client reçoit l’exception : Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed.

Cause

Le service Azure Relay redémarre les connexions d’écouteur toutes les 24 heures. Ce comportement est inhérent au produit. Le service Azure Relay déconnecte une connexion active de l’écouteur toutes les 24 heures, et l’écouteur se reconnecte avec le serveur à l’aide du mécanisme de nouvelle tentative.

Résolution

Aucune action de votre part en tant qu’écouteur se reconnecte automatiquement au serveur. Si vous remarquez que votre écouteur ne se connecte pas à nouveau, envoyez un ticket à l’équipe de support technique.

Étapes suivantes