問題タブ [microsoft-dynamics-webapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# プラグインで Dynamics Web API を呼び出す
新しいクライアントの作成を処理するために、Microsoft Dynamics にビジネス プロセス フローがあります。プロセスが終了したら、プラグインを呼び出してカスタム処理を実行するアクションを開始するワークフローを添付します。この記事に従って、このプロセスを設定しています。
私のプラグインでは、Dynamics Web API への呼び出しがあります (以下のコードを参照)。行にヒットするresponseMessage = client.GetAsync(url).Result;
と、プラグインはエラーを返さずに終了します。プラグイン登録ツールでデバッグしているときに、プラグイン登録ツールがクラッシュし、再起動する必要があります。ネットワーク トラフィックを見ると、この呼び出しは401 - Unauthorized
エラーで失敗しているように見えます。
HttpClient
コンソール アプリからこれと同じ呼び出しを試みると、呼び出しは成功します。認証のためにいくつかの異なる資格情報を試しましたが、成功しませんでした。GetAsync
また、いくつかの異なる方法で関数を呼び出してみました。このエラーは非同期または認証方法に関連していますか? ここで何が欠けていますか?
アップデート
Dynamics 2016 オンプレミスを使用しています。
Web API を使用する理由は、この呼び出しが、複数のシステム間のインターフェイスとなる、開発したライブラリで発生するためです。ライブラリはプラグイン内で使用されますが、他のアプリケーションのプラグインの外でも使用できます。提供したコード サンプルは、ライブラリで失敗しているコードのチャンクです。コードのチャンクをプラグインに直接取り込んで、エラーがライブラリに関連しているのか、プラグインに関連しているのかを確認しました。
私たちは、client.GetAsync(url).Result
呼び出しは実際には正しい値を返していました。ネットワーク トラフィックで、2 回の呼び出しが失敗してから 3 回目の呼び出しが成功し、正しい値が返されたことを確認できませんでした (下のスクリーンショットを参照)。奇妙なことに、このコード行をデバッグするときに、コード行をステップ オーバーすると、ネットワーク トラフィックが正しい値を返したことを示している間に、プラグイン登録ツールがクラッシュします。このコード行の後にブレークポイントを設定すると、プラグイン登録ツールはクラッシュせず、応答に正しい値が含まれます。この動作は、プラグインで直接ではなく、ライブラリでのデバッグに戻ると変わります。ライブラリでは、ネットワーク トラフィックが正常な応答を示していても、ブレークポイントを設定した場所に関係なく、この行に到達するとプラグイン登録ツールが常にクラッシュします。
更新 2
私のライブラリはWeb APIに対して複数の異なる呼び出しを正常に行っているように見えるので、プラグイン登録ツールが実際に機能していない呼び出しよりも多くのWeb API呼び出しを処理できないことが問題だと考えています。