同僚から、CI エージェントの 1 つで失敗した BizTalk アプリケーション ビルドを調べるように依頼されました。簡単に言うと、.MSI ファイルをエクスポートした後、展開スクリプトはアプリケーションのバインド ファイルをインポートしようとします。1 時間スピンした後、次のエラーで停止します。
エラー: バインディング情報の更新に失敗しました。タイプの例外 ||'Microsoft.BizTalk.CachingService.NotificationFailedException||' 投げられました。
スクリプトは、次の方法で BizTalk PowerShell スナップインを使用します。
Add-PSSnapin –Name BizTalkFactory.PowerShell.Extensions
上記のエラーを示す行は次のとおりです。
Import-Bindings -Path "BTS:\Applications\$AppToDeploy" -Source "$bindingsFileName"
これは、CI パイプラインに関する限り、新しいアプリケーションです。ローカルおよび別の開発 BizTalk マシンで同じスクリプトを実行しようとしましたが、問題なくインポートされました。
また、BizTalk 管理コンソールを使用して、バインディング xml ファイルを手動でインポートしようとしました。CIボックスでもハングしますが、開発マシンでは正常に動作します。
ハングしている間、(同じマシンでホストされている) SQL を見ると、ブロックされたプロセスがあります。ブロックの原因となっているプロセスは更新を行っていないため、何らかの DTC ロックであると想定しています。BizTalk に読み込まれている他のアクティブな SQL ユーザーまたはアプリケーションはありません。CPU はアイドル状態で、メモリは 20% で、ディスク アクティビティはほとんど停止しています。
この新しいアプリケーションの CI エージェント マシンに固有のもののように見えますが、次にどこを見ればよいか途方に暮れています。BizTalk には、バインディング インポートがスタックする場所と理由を確認するために有効にできるログまたはトレースがありますか?
PS 他の既存のアプリケーションのバインドのインポートは正常に機能します。バインディング ファイル内の唯一のオーケストレーションのアセンブリ バージョンを無効なものに変更すると、インポートは正常に実行されますが、そのアセンブリが存在しないため、明らかにアプリケーションが機能しません。