このセクションには、オーケストレーションに関する実行時の問題の解決に役立つ一連の質問と回答が含まれています。
親によって開始された子オーケストレーションに送信するときに、断続的なサブスクリプション エラーが発生するのはなぜですか。
"サブスクリプションが見つかりませんでした" というサブスクリプションのエラーは、競争状態の結果です。 競合状態は、プロセスの結果がプロセスが実行される特定の順序に依存する場合に発生します。 この場合、親から送信されたメッセージを受信するために、子オーケストレーションが時間内に開始されていないと、状況が発生します。
この問題を回避するために、子オーケストレーションが開始され、メッセージを受信する準備ができたときに親にメッセージを送り返すことができます。 このようにして、メッセージを送信する前に、開始した親オーケストレーションが受信者の存在を確認できるようになります。
動的送信ポートを論理ポートに接続するとエラーが発生する理由
動的ポートは、割り当てられたポートのすべての属性と特性を継承するように設計されているわけではありません。 動的ポートはアドレスのみを取得します。論理ポートに関連付けられている他の情報は継承されません。
たとえば、配信通知 = 送信済みの論理ポートに動的送信ポートをアタッチした場合、ランタイムは配信通知を配信しません。 XLANGs ランタイムは、ポートが実際に静的にそのように設定されている場合にのみ、配信通知をリッスンします。
注
XLANG では、ポートは静的に構成されている場合にのみ動作します。
カスタム コンポーネントを含むオーケストレーションを展開した後にアプリケーションを実行しようとすると、"ファイル名またはアセンブリ名またはその依存関係のいずれかが見つかりません" というエラーが表示されるのはなぜですか?
通常、このエラーは、BizTalk オーケストレーション エンジンがカスタム コンポーネントを見つけることができないことを意味します。 BizTalk アプリケーションに含まれるすべてのアセンブリは、アプリケーションをホストするコンピューターのグローバル アセンブリ キャッシュにインストールする必要があります。
オーケストレーションを介して Web サービスにドキュメントを送信するときに、"AssemblyName コンテキスト プロパティが無効でした" というエラーが発生する
問題
オーケストレーションを使用してドキュメントを Web サービスに送信すると、"AssemblyName コンテキスト プロパティが無効です" というエラーが発生します。
原因
BizTalk アプリケーションは、当初、オーケストレーションを介入せずに "メッセージング" アプローチを使用して設計されました。 この種類のソリューションでは、送信ポート フィルターを使用して受信ポートと送信ポートをリンクし、受信時にドキュメントが送信ポートに渡されるようにします。 その後、送信ポートにバインドされたオーケストレーションを含むようにソリューションが変更されました。
解決策
送信ポートのフィルターを削除します。 オーケストレーションにバインドされている送信ポートにフィルターを適用すると、多くの場合、メッセージはオーケストレーションをバイパスし、コンテキスト プロパティ エラーを引き起こします。
オーケストレーションでマルチパート MIME メッセージを処理するときに "WrongBodyPartException" が発生する
問題
マルチパート MIME メッセージをオーケストレーションに受信すると、 WrongBodyPartException 例外が発生します。
原因
このエラーは、パーツの順序が正しく指定されていない場合、またはメッセージが指定したパーツ位置に準拠していない場合に発生する可能性があります。 たとえば、3 番目の部分は本文部分で、メッセージは 3 番目の位置にヘッダー部分を持って到着することを指定した場合です。
解決策
ボディパートのインデックス設定が正しく行われていることを確認し、アダプター経由で到着するすべてのメッセージがその設定と一致していることを確かめます。 オーケストレーションを停止することで、オーケストレーション内で失敗した MIME メッセージの内容を調べることができます (ただし、登録を維持します)。これにより、メッセージが強制的に発行されるため、管理コンソールを使用して確認し、パーツの順序を確認できます。
マルチパート MIME メッセージパーツが見つかりません
問題
インデックス値が 0 より大きい MIME メッセージ パーツを取得しようとすると、BizTalk Server ランタイムで"インデックス = <value>を持つマルチパート メッセージが見つかりません" のようなエラーがスローされます。
原因
このエラーの最も一般的な原因は次のとおりです。
MIME メッセージの部分数が予想よりも少なくなります。
MIME メッセージを完全に解析できませんでした。
解決策
この問題を解決するには、コードがメッセージ ソースから予想される範囲内にあるメッセージ部分のみを取得することを確認します。 解析の問題が発生した場合は、元の MIME メッセージが構造的に健全で適切に構築されていることを確認する必要があります。 解析の問題が時折発生する場合は、オーケストレーションに適切な例外ハンドラーがあることを確認してください。
動的送信ポートを使用して送信するときに、"FILE 送信アダプターで書き込み用にファイルを開くことができません" というエラーが表示される
問題
動的送信ポートを使用して送信するときに、BizTalk Server イベント ログに "File send adapter cannot open file <filename> for writing" というエラーが表示されます。
この問題は、BTS の場合に発生します 。OutBoundTransportLocation プロパティはオーケストレーション式で定義され、ファイル トランスポートが指定されます。たとえば、次の式を使用すると、実行時にこのエラーが発生します。
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file:///c:/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
-又は-
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file://mymachine/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
原因
この問題は、実行時にオーケストレーション エンジンが指定された URL から "file://" というテキストを削除するためです。 そのため、上記の例を使用して、"file:///c:/test/out" は \c:\test\out として評価され、"file://mymachine/test/out" は mymachine\test\out として評価されます。
解決策
式で BTS.OutBoundTransportLocation プロパティの URL を指定するときは、必要に応じて "/" 文字を追加または削除します。 上記の例を使用して、BTS.OutBoundTransportLocation プロパティは "file://c:/test/out" として定義する必要があります。これは c:\test\out と評価されるか、"file:////mymachine/test/out" は \\mymachine\test\out と評価されます。