Partager via


Exemple : Accès Web à partir d’un plug-in

Cet exemple montre comment écrire un plug-in qui peut accéder aux ressources (réseau) web en tant que service web ou flux. Il montre également comment limiter la durée impartie à cet appel.

Comment exécuter cet exemple

  1. Télécharger ou cloner le référentiel Exemples pour en avoir une copie locale. Cet exemple se trouve sous PowerApps-Samples-master\dataverse\orgsvc\C#\WebAccessPlugin.
  2. Ouvrez l’exemple de solution dans Visual Studio, accédez aux propriétés du projet, puis vérifiez que l’assembly est signé pendant la build. Appuyez sur F6 pour générer l’assemblage d’un exemple (WebAccessPlugin.dll).
  3. Exécutez l’outil Plug-in Registration et enregistrez l’exemple d’assembly dans le sandbox et la base de données du serveur Microsoft Dataverse.
  4. Lors de l′enregistrement d′une étape, spécifiez une chaîne d′URI web (c′est-à-dire, https://www.microsoft.com) dans la colonne de configuration non sécurisée.
    • Si aucune valeur n’est fournie, la valeur par défaut https://www.bing.com est utilisée.
  5. À l’aide d’une application ou d’un code d’écriture pour effectuer l’opération appropriée pour invoquer le message et la requête de table sur lesquels vous avez enregistré le plug-in (créez un compte).
  6. Lorsque le plug-in s’exécute, si la durée de l’appel dépasse les 15 secondes imparties, il déclenche une erreur. Sinon, l’opération doit réussir.
  7. Lorsque vous avez terminé les tests, annulez l’enregistrement de l’assemblage et de l’étape à l’aide de l’outil Enregistrements de plug-ins.

En quoi consiste cet exemple

Une fois exécuté, le plug-in télécharge les données de la page Web à partir de l’adresse de service Web spécifiée (ou de l’adresse par défaut). Si la demande dépasse la limite de 15 secondes, elle lance une InvalidPluginExecutionException et écrit les détails dans le journal de suivi du plug-in.

  • Si le plug-in HttpClientPlugin échoue, il écrit quelque chose comme ce qui suit dans le journal de suivi du plug-in :

    Downloading the target URI: https://www.bing.com
    Inner Exceptions:
      Exception: System.Threading.Tasks.TaskCanceledException: A task was canceled.
    Exception: Microsoft.Xrm.Sdk.InvalidPluginExecutionException: An exception occurred while attempting to issue the request.
       at PowerApps.Samples.HttpClientPlugin.Execute(IServiceProvider serviceProvider)
    

    L’exception TaskCanceledException est ambiguë sur la cause de la tâche annulée. Pour obtenir une solution plus complète indiquant comment détecter explicitement des erreurs dues à des dépassements du temps, consultez ce billet de blog : Better timeout handling with HttpClient.

Utiliser cet exemple

Afin de simuler le scénario décrit dans En quoi consiste cet exemple, l′exemple procède comme suit :

Configuration

  1. Vérifie le paramètre de configuration non sécurisé du constructeur pour une valeur d’adresse Web ; sinon, la valeur par défaut est utilisée.
  2. La classe HttpClient est utilisée par la méthode Execute du plug-in pour télécharger les données d’une page web.
  3. Si l’appel dépasse la durée de 15 secondes spécifiée, une InvalidPluginExecutionException est lancée et les détails sur l’erreur sont écrits dans le journal de suivi du plug-in.

Démontrer

Plugin HttpClientPlugin

  1. Utilise la classe HttpClient et définit la propriété d’expiration pour limiter le temps imparti pour effectuer l’opération.
  2. Intercepte la classe AggregateException attendue et examine l’exception interne pour la TaskCanceledException prévue.

Voir aussi

Accéder aux ressources web externes
Enregistrer un plug-in