5

新しいクライアントの作成を処理するために、Microsoft Dynamics にビジネス プロセス フローがあります。プロセスが終了したら、プラグインを呼び出してカスタム処理を実行するアクションを開始するワークフローを添付します。この記事に従って、このプロセスを設定しています。

私のプラグインでは、Dynamics Web API への呼び出しがあります (以下のコードを参照)。行にヒットするresponseMessage = client.GetAsync(url).Result;と、プラグインはエラーを返さずに終了します。プラグイン登録ツールでデバッグしているときに、プラグイン登録ツールがクラッシュし、再起動する必要があります。ネットワーク トラフィックを見ると、この呼び出しは401 - Unauthorizedエラーで失敗しているように見えます。

HttpClientコンソール アプリからこれと同じ呼び出しを試みると、呼び出しは成功します。認証のためにいくつかの異なる資格情報を試しましたが、成功しませんでした。GetAsyncまた、いくつかの異なる方法で関数を呼び出してみました。このエラーは非同期または認証方法に関連していますか? ここで何が欠けていますか?

HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential("admin", "password", "DOMAIN") });
client.BaseAddress = new Uri(Helpers.GetSystemUrl(COHEN.APIConnector.Application.Dynamics));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
client.DefaultRequestHeaders.Add("OData-Version", "4.0");
HttpResponseMessage responseMessage;
string url = "ccseq_clients";

responseMessage = client.GetAsync(url).Result;

アップデート

Dynamics 2016 オンプレミスを使用しています。

Web API を使用する理由は、この呼び出しが、複数のシステム間のインターフェイスとなる、開発したライブラリで発生するためです。ライブラリはプラグイン内で使用されますが、他のアプリケーションのプラグインの外でも使用できます。提供したコード サンプルは、ライブラリで失敗しているコードのチャンクです。コードのチャンクをプラグインに直接取り込んで、エラーがライブラリに関連しているのか、プラグインに関連しているのかを確認しました。

私たちは、client.GetAsync(url).Result呼び出しは実際には正しい値を返していました。ネットワーク トラフィックで、2 回の呼び出しが失敗してから 3 回目の呼び出しが成功し、正しい値が返されたことを確認できませんでした (下のスクリーンショットを参照)。奇妙なことに、このコード行をデバッグするときに、コード行をステップ オーバーすると、ネットワーク トラフィックが正しい値を返したことを示している間に、プラグイン登録ツールがクラッシュします。このコード行の後にブレークポイントを設定すると、プラグイン登録ツールはクラッシュせず、応答に正しい値が含まれます。この動作は、プラグインで直接ではなく、ライブラリでのデバッグに戻ると変わります。ライブラリでは、ネットワーク トラフィックが正常な応答を示していても、ブレークポイントを設定した場所に関係なく、この行に到達するとプラグイン登録ツールが常にクラッシュします。

ネットワーク トラフィック


更新 2

私のライブラリはWeb APIに対して複数の異なる呼び出しを正常に行っているように見えるので、プラグイン登録ツールが実際に機能していない呼び出しよりも多くのWeb API呼び出しを処理できないことが問題だと考えています。

ネットワーク トラフィック

4

2 に答える 2

2

問題は、プラグインの実行をプロファイリングするプラグイン登録ツールにあったと思います。私のフォローアップの質問はこちらです。

于 2018-08-01T14:18:21.087 に答える