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
- 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.
- Ö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).
- Führen Sie das Plug-in-Registrierungstool aus und registrieren Sie die Baugruppe in der Sandbox und Datenbank des Microsoft Dataverse-Servers.
- 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.
- Der Standardwert
- 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.
- 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.
- 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
- Überprüft den unsicheren Konfigurationsparameter des Konstruktors auf einen Webadressenwert; andernfalls wird der Standardwert verwendet.
- Die HttpClient-Klasse wird von der
Execute
-Methode des Plug-Ins zum Herunterladen von Webseitendaten verwendet. - 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
- Verwendet die HttpClient Class und setzt die Timeout-Eigenschaft, um die zulässige Zeit für die Ausführung der Operation zu begrenzen.
- 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