1

BizTalk オーケストレーションから現在の日付を返すだけの IIS がホストする WCF Web サービスを呼び出そうとしています。このサービスへの入力パラメータはありません。

First Receive_1 と Last Send_1 シェイプは、このオーケストレーションを開始するために使用したばかりなので無視してください。私のオーケストレーションは次のようになります。

ここに画像の説明を入力

「Add Generated Items...」ウィザードを使用して、生成された参照をオーケストレーションの Web サービスに追加しました。私の Web サービス定義は次のようになります。

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    DateTime GetLastExecutionDate();
}

public class CalculatorService : ICalculator
{

    public DateTime GetLastExecutionDate()
    {
        return DateTime.Now.AddMonths(-6);
    }
}

生成された参照を BizTalk プロジェクトに追加した後、ウィザードは次のような一連のポートとマルチ パート メッセージを作成しました。

ここに画像の説明を入力

以下のように、これらの呼び出し間でデータを転送するローカル メッセージも作成しました。

ここに画像の説明を入力

これで、パラメーターなしで Web サービスを呼び出すために InputMessage を作成する必要があることをできる限り読みました。

一部のフォーラム/Web サイトでは、dateRequest メッセージの MessageType を使用して空白の ConstructMessage シェイプを作成するだけでよいと言っています。そうしている間、プロジェクトはコンパイルされず、次のエラー メッセージが表示されます。

ここに画像の説明を入力

もう 1 つの推奨事項は、空白のドキュメントに対して MessageAssignment を実行することです。したがって、オーケストレーションの MessageAssginment シェイプには次のようなものがあります。

xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml("<GetLastExecutionDate/>");
dateRequest.parameters = xDoc;

これがコンパイルされて展開される間、私の BizTalk インスタンスは次の例外で中断されます。

送信パイプラインの実行中にエラーが発生しました: "Microsoft.BizTalk.DefaultPipelines.XMLTransmit, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ソース: "XML アセンブラー" 送信ポート: "REDACTED_1. 0.0.0_REDACTED.ExportData_WCFPort_dace989afd9cd9c5" URI: " http://localhost/COMPANYNAME/WCFService/Service.svc " 理由: このアセンブラーは、この型 "GetLastExecutionDate" を使用してドキュメント仕様を取得できません。

サービスに渡されるパラメーター データは次のとおりです。

私の質問は次のとおりです。入力パラメーターを必要としない WCF サービスを呼び出すにはどうすればよいですか。

4

3 に答える 3

1

Visual Studio 内からサービス リクエスト メッセージ スキーマ ファイルに移動します。

右クリック -> インスタンスの生成。

生成された XML インスタンスを取得し、すべての二重引用符を単一引用符に置き換えます。

次に、これを割り当ての LoadXml() に貼り付けます

ここに画像の説明を入力

于 2012-01-27T10:50:12.227 に答える
0

メッセージ割り当て図形で使用される文字列には、おそらく XML 名前空間が必要です。XML 文字列を Web サービス スキーマに対して検証して、有効なメッセージであることを確認することをお勧めします。

xsd.exe を使用して、Web サービス スキーマから .NET クラスを作成することもできます。

オーケストレーションでメッセージを構築する方法の完全なリストについては、http://msdn.microsoft.com/en-us/library/aa547985(BTS.20).aspx を参照してください。

于 2012-01-27T09:26:29.953 に答える