Résoudre les erreurs dans le planificateur de tâches durables

Cet article vous aide à résoudre les scénarios courants dans les applications Planificateur de tâches durables. Recherchez votre scénario dans la liste suivante et suivez les étapes liées pour diagnostiquer et résoudre le problème.

Scénarios courants

Note

Les ingénieurs du support technique Microsoft sont disponibles pour diagnostiquer les problèmes liés à votre application. Si vous n'êtes pas en mesure de diagnostiquer votre problème après avoir parcouru cet article, vous pouvez déposer un ticket de support en accédant à la section Help>Support + dépannage de la ressource Planificateur de tâches durables dans le portail Azure.

Vérifier la chaîne de connexion et l'accès au planificateur de tâches durables

Lorsque votre application n’est pas en cours d’exécution comme prévu, vérifiez ce qui suit :

  • Le format de la chaîne de connexion est correct.
  • L’authentification est configurée correctement.

Développement local

  1. Vérifiez la chaîne de connexion, qui doit avoir ce format : Endpoint=http://localhost:<port number>;Authentication=None. Vérifiez que le numéro de port est celui mappé sur 8080 le conteneur exécutant l’émulateur de planificateur de tâches durable.

  2. En plus de l’émulateur de planificateur de tâches durable, assurez-vous que l’émulateur de stockage Azure, Azurite, est démarré. Azurite est nécessaire pour les composants de l’application associée à Functions.

En cours d’exécution sur Azure

  1. Vérifiez votre application pour connaître les variables DURABLE_TASK_SCHEDULER_CONNECTION_STRING d’environnement et TASKHUB_NAME.

  2. Vérifiez la valeur DURABLE_TASK_SCHEDULER_CONNECTION_STRING. Plus précisément, vérifiez que le point de terminaison du planificateur et le type d’authentification sont corrects. La chaîne de connexion doit être mise en forme comme suit lors de l’utilisation :

    • Identité managée affectée par l’utilisateur : Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}client id est l’ID client de l’identité.
    • Identité managée affectée par le système : Endpoint={scheduler endpoint};Authentication=ManagedIdentity
  3. Vérifiez que l’autorisation de contrôle d’accès en fonction du rôle (RBAC) requise est accordée à l’identité qui doit accéder au hub de tâches ou au planificateur spécifié.

  4. Si l’identité managée affectée par l’utilisateur est utilisée, vérifiez que l’identité est affectée à votre application.

Erreur lors du déploiement de l’application Durable Functions sur Azure

Si votre déploiement échoue avec une erreur telle que Encountered an error (ServiceUnavailable) from host runtime de Visual Studio Code, vérifiez d’abord que votre application a bien les variables d'environnement requises correctement définies. Redéployez ensuite votre application. Si vous voyez une erreur de chargement des fonctions, sélectionnez le bouton Actualiser .

Erreur inconnue lors de la récupération des détails de ce hub de tâches

Si vous obtenez une Unknown error retrieving details of this task hub erreur sur le tableau de bord du planificateur de tâches durable, la raison peut être :

  1. Votre identité (e-mail) ne dispose pas de l’autorisation requise pour ce hub de tâches. Suivez les instructions pour accorder l’autorisation, puis accédez à nouveau au tableau de bord.

  2. Votre hub de tâches a été supprimé.

Impossible de supprimer la ressource

Avant de pouvoir supprimer une ressource de planificateur, vous devez d’abord supprimer tous ses hubs de tâches. Si ce n’est pas le cas, vous recevez le message d’erreur suivant :

{
  "error": {
    "code": "CannotDeleteResource",
    "message": "Cannot delete resource while nested resources exist. Some existing nested resource IDs include: 'Microsoft.DurableTask/schedulers/YOUR_SCHEDULER/taskhubs/YOUR_TASKHUB'. Please delete all nested resources before deleting this resource."
  }
}

Pour résoudre ce problème, listez les hubs de tâches dans l'ordonnanceur et supprimez-les :

# List all task hubs in the scheduler
az durabletask taskhub list --resource-group RESOURCE_GROUP_NAME --scheduler-name SCHEDULER_NAME

# Delete each task hub
az durabletask taskhub delete --resource-group RESOURCE_GROUP_NAME --scheduler-name SCHEDULER_NAME --name TASKHUB_NAME

Une fois que tous les hubs de tâches sont supprimés, réessayez de supprimer la ressource du planificateur.

Impossible de déterminer le projet à construire

Si, après avoir démarré Azurite, vous rencontrez l’erreur : “Can't determine Project to build. Expected 1 .csproj or .fsproj but found 2”

  • Supprimez les répertoires bin et obj dans votre application.
  • Réessayez d’exécuter func start .

Impossible de trouver des fichiers binaires natifs pour ARM (Apple silicon)

Si vous voyez des erreurs gRPC liées à l’absence de recherche de fichiers binaires natifs pour ARM (par exemple sur un Mac Apple silicon — M1, M2, etc.), ajoutez la solution de contournement suivante à votre extensions.csproj fichier :

  1. Ajoutez une référence de package à Contrib.Grpc.Core.M1.
  2. Ajoutez une cible post-build personnalisée qui copie les bibliothèques natives gRPC ARM64 vers le répertoire de sortie correct.

Ajoutez les éléments suivants ItemGroupTarget à votre extensions.csproj:

<!-- Workaround for gRPC issues on ARM (Apple silicon) devices -->
<ItemGroup>
  <PackageReference Include="Contrib.Grpc.Core.M1" Version="2.41.0" />
</ItemGroup>
<Target Name="CopyGrpcNativeAssetsToOutDir" AfterTargets="Build">
  <ItemGroup>
    <NativeAssetToCopy Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="$(OutDir)runtimes/osx-arm64/native/*"/>
  </ItemGroup>
  <Copy SourceFiles="@(NativeAssetToCopy)" DestinationFolder="$(OutDir).azurefunctions/runtimes/osx-arm64/native"/>
</Target>