Biztalk 2010からWCFサービスを消費する方法
-
27-10-2019 - |
質問
Biztalk Orchestrationから消費する必要があるWebサービスがあります。私はbiztalkで使用しているメッセージスキーマを定義しました、彼らは次のように見えます
<?xml version="1.0" encoding="utf-16"?>
<xs:schema
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
xmlns:ns0="https://DTIB.PropertySchema"
elementFormDefault="qualified"
targetNamespace="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation=".\CommonTypes.xsd" />
<xs:element name="ProviderRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Parameters" type="ParametersType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
WCFサービスでは、次のようなメソッドがあります
public ProviderResponse Provide(ProviderRequest providerRequest) {...}
どこ ProviderRequest
のように定義されています
[DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
public class ProviderRequest
{
[DataMember]
public Header Header { get; set; }
[DataMember]
public Parameter[] Parameters { get; set; }
}
送信ポートを作成して、プロバイダーレクエストメッセージを送信しようとすると、異なるエラーで失敗します。
BizTalkプロジェクトで定義されているのと同じスキーマを使用するWCFサービスを消費するための最良の方法は何ですか?
解決
あなたの最善の策は、サービスのインスタンスを実行してから、「生成されたアイテムを追加」 - >「Visual Studio内から「WCFサービスを消費」することです。
これにより、サービスメッセージXSDとポートタイプが生成され、やろうとしていることを行うための低摩擦の方法です。
他のヒント
非常に興味深い質問、他の人に起こるかもしれないシナリオ。
ここにいくつかの提案があります。
最も一般的なケース: あなたはサービスを消費する必要があり、それらのメッセージを使用したい - ヒューの提案「生成されたアイテムを追加...」を使用します...」
あまり一般的ではありません: サービスが使用するスキーマ(同じ) - ヒューの提案「生成アイテムの追加...」 - 複製のスキーマを削除するか、独自または作成されたスキーマを削除しました
それほど一般的ではありません: 同じスキーマを使用する2つのサービスを消費したい - Hughの提案を使用して「生成されたアイテムを追加...」 - 生成されたもののいずれかから複製するスキーマを削除します
私に起こったことはありませんでした: サービスが使用するスキーマはすでに作成されています(同じではなく、同じルート名と名前のスペース) - 何もすることはありません。これは機能しません(箱から出して)