Freigeben über


Beispiel: Webzugriff von einem Plug-in aus

Dieses Beispiel zeigt, wie man ein Plug-in schreibt, das auf Netzwerkressourcen (Web) wie einen Webservice oder Feed zugreifen kann. Es wird auch gezeigt, wie man die für diesen Anruf zulässige Zeitdauer begrenzt.

Wie man dieses Beispiel ausführt

  1. Um eine lokale Kopie zu erhalten, laden Sie den Beispielbericht herunter, oder klonen Sie ihn. Dieses Beispiel befindet sich unter PowerApps-Samples-master\dataverse\orgsvc\C#\WebAccessPlugin.
  2. Öffnen Sie die Beispiellösung in Visual Studio, navigieren Sie zu den Eigenschaften des Projekts und vergewissern Sie sich, dass die Assembly während des Erstellens signiert wird. Drücken Sie F6, um die Assembly des Samples zu erstellen (WebAccessPlugin.dll).
  3. Führen Sie das Plug-in-Registrierungstool aus und registrieren Sie die Baugruppe in der Sandbox und Datenbank des Microsoft Dataverse-Servers.
  4. Wenn Sie einen Schritt registrieren, geben Sie eine Web-URI-Zeichenfolge (d. h. https://www.microsoft.com) in der Spalte „Unsichere Konfiguration“ an.
    • Der Standardwert https://www.bing.com wird verwendet, wenn kein Wert angegeben wird.
  5. Verwenden Sie eine App oder schreiben Sie Code, um die entsprechende Operation auszuführen, um die Anfrage für Nachrichten und Tabellen aufzurufen, auf die Sie das Plug-In registriert haben.
  6. Wenn das Plug-In ausgeführt wird und die Dauer des Aufrufs die 15-Sekunden-Grenze überschreitet, wird ein Fehler ausgelöst. Andernfalls sollte es gelingen.
  7. Wenn Sie mit dem Testen fertig sind, heben Sie die Registrierung der Assembly und des Schritts mit dem Plug-In-Registrierungstool auf.

Funktionsweise

Wenn das Plug-in ausgeführt wird, lädt es Webseitendaten von der angegebenen Webservice-Adresse (oder der Standardadresse) herunter. Wenn die Anfrage die 15-Sekunden-Grenze überschreitet, wird eine InvalidPluginExecutionException zurückgegeben und Details in das Plug-In-Ablaufverfolgungsprotokoll geschrieben.

  • Wenn das Plug-In HttpClientPlugin fehlschlägt, schreibt es etwas wie das Folgende in das Plug-In-Ablaufverfolgungsprotokoll:

    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)
    

    Die TaskCanceledException ist zweideutig bezüglich der Ursache für das Abbrechen der Aufgabe. Eine umfassendere Lösung, die zeigt, wie man Fehler aufgrund von Timeouts explizit erkennt, finden Sie in diesem Blogbeitrag: Bessere Timeout-Verarbeitung mit HttpClient.

Wie dieses Beispiel funktioniert

Um das unter Funktionsweise dieses Beispiels beschriebene Szenario zu simulieren, geht das Beispiel wie folgt vor:

Einrichtung

  1. Überprüft den unsicheren Konfigurationsparameter des Konstruktors auf einen Webadressenwert; andernfalls wird der Standardwert verwendet.
  2. Die HttpClient-Klasse wird von der Execute-Methode des Plug-Ins zum Herunterladen von Webseitendaten verwendet.
  3. Wenn der Aufruf die angegebene Dauer von 15 Sekunden überschreitet, wird eine InvalidPluginExecutionException zurückgegeben und Details über den Fehler werden in das Plug-In-Ablaufverfolgungsprotokoll geschrieben.

Demonstrieren

HttpClientPlugin-Plugin-Plugin

  1. Verwendet die HttpClient Class und setzt die Timeout-Eigenschaft, um die zulässige Zeit für die Ausführung der Operation zu begrenzen.
  2. Fängt die erwartete AggregateException Class ab und untersucht die inneren Ausnahmen auf die erwartete TaskCanceledException.

Siehe auch

Zugriff auf externe Web-Ressourcen
Registrieren eines Plug-Ins