サンプル: プラグインからの Web アクセス
このサンプルは、ネットワーク (Web) サービスもしくはフィードのようなリソースにアクセスできるプラグインの書き込み方法を示します。 この呼び出しに認められる時間の長さを制限する方法も示します。
このサンプルを実行する方法
- サンプル リポジトリをダウンロードまたは複製して、ローカル コピーを用意します。 このサンプルは、 PowerApps-Samples-master\dataverse\orgsvc\C#\WebAccessPlugin にあります。
- Visual Studio でサンプル ソリューションを開き、プロジェクトのプロパティに移動して、ビルド中にアセンブリが署名されることを確認してください。 サンプルのアセンブリ (WebAccessPlugin.dll) をビルドするには F6 を押します。
- プラグイン登録ツールを実行して Microsoft Dataverse サーバーのサンドボックスおよびデータベースにアセンブリを登録します。
- ステップを登録する際には、非セキュア構成列にウェブ URI 文字列 (
https://www.microsoft.com
) を指定します。- 何も指定しない場合、既定値
https://www.bing.com
が使用されます。
- 何も指定しない場合、既定値
- アプリまたは書き込みコードを使って、プラグインを登録したメッセージやテーブルのリクエストを呼び出す適切な操作を行います。
- プラグインを実行すると、呼び出しの期間が15 秒の制限を超えた場合、エラーがスローされます。 それ以外の場合、正常に実行されます。
- テストが完了したら、プラグイン登録ツールを使用してアセンブリとステップの登録を解除します。
このサンプルの概要
実行すると、プラグインは、指定した Web サービス アドレス (つまり既定のアドレス) から Web ページ データをダウンロードします。 要求が 15 秒の制限を超えると、InvalidPluginExecutionException がスローされ、プラグイン トレース ログに詳細を書き込みます。
HttpClientPlugin
プラグインが失敗すると、プラグイン トレース ログに次のような内容が書き込まれます。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)
TaskCanceledException は、タスクがキャンセルされる理由について若干あいまいです。 タイムアウトによるエラーを明示的に検出する方法を示す、詳細なソリューションについては、ブログ投稿 HttpClient 処理のより優れたタイムアウト処理を参照してください。
このサンプルがどのように動作するか
このサンプルの概要で説明されているシナリオをシミュレートするため、サンプルは次のことを行います:
設定
- コンストラクターの安全でない構成パラメーターで Web アドレス値を確認します。それ以外の場合は、既定値が使用されます。
-
HttpClient クラスは、Web ページ データをダウンロードするためにプラグイン
Execute
メソッドが使用します。 - 通話が指定された 15 秒の期間を超えると、InvalidPluginExecutionException がスローされ、エラーの詳細がプラグイン トレース ログに書き込まれます。
実際の動作
HttpClientPlugin プラグイン
- HttpClient クラスを使い、Timeout プロパティを使って操作の完了までに許容される時間を制限します。
- 予想される AggregateException クラスを取得し、予想される TaskCanceledException の内部例外を調べます