BizTalk アプリケーションを複数デプロイするときの注意点

こんにちは、BizTalk Server サポートの五十嵐です。

今回は、BizTalk アプリケーションを複数デプロイする際の一般的な注意点についてご紹介します。

 

はじめに

今回は、同じ名前空間のスキーマが複数存在すると、エラーが発生し、メッセージの受信ができなくなるという問題についてご紹介します。

具体的な発生原因と、回避策についてご案内します。

 

どんなエラー?

BizTalk アプリケーションを作成し、メッセージを投入すると、以下のエラーで受信できないことがあります。

エラーメッセージ:

URI “C:\WCF1\in\*.xml” の受信場所 “受信場所2” でアダプター “FILE” が受信するメッセージが保留されています。
エラーの詳細: 受信パイプライン “Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35” を実行中にエラーが発生しました。送信元: “XML 逆アセンブラ―”、受信ポート: “受信ポート2”、URI: C:\WCF1\in\*.xml、理由: 複数のスキーマがメッセージの種類 “https://tempuri.org/#GetData” と一致するので、ドキュメント仕様を検索できません。 schema_1

このエラーは、BizTalk Group 内に同じ名前空間を持つ複数のスキーマが存在し、スキーマの参照先が特定できないために起きるものです。

 

このエラーのときにはココを確認

BizTalk Server 管理コンソールで、コンソール ルート > BizTalk Server 管理 > BizTalk Group > アプリケーション > すべてのアイテム > スキーマ を確認すると、 schema_2

アセンブリ名、アプリケーション名は異なりますが、確かに同じ名前空間・同じルート名のスキーマが存在することがわかります。

 

エラーの回避策

このエラーの回避策は、BizTalk Group 内で各スキーマが一意になるよう、ターゲットの名前空間を変更することです。

今回は、アプリケーション ”WCF2” のスキーマの Target Namespace を変えてみます。 schema_3

 

再デプロイし、名前空間が変わっていることを確認します。 schema_4

この状態であれば、問題なくメッセージの送信が完了します。

ポイントは、メッセージの種類を同じ BizTalk アプリケーション内だけでなく、BizTalk Group 単位で一意にする必要があるということです。

残念ながら、デプロイ時にエラーを検出することはできません。

メッセージを投入してみて初めて気づく問題ですので、是非ご注意ください!

ではまた、次回もよろしくお願いいたします。