1

BizTalkオーケストレーションから使用する必要のある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; }
        }

送信ポートを作成してProviderRequestメッセージを送信しようとすると、さまざまなエラーで失敗します。

BizTalkプロジェクトで定義されているものと同じスキーマを使用するWCFサービスを利用するための最良の方法は何ですか?

4

2 に答える 2

1

最善の策は、サービスのインスタンスを実行してから、Visual Studio 内から [生成されたアイテムの追加] -> [WCF サービスの使用] を実行することです。

これにより、サービス メッセージの XSD とポート タイプが生成され、目的を達成するための簡単な方法になります。

于 2011-09-07T15:41:32.523 に答える
0

非常に興味深い質問です。他の人にも起こり得るシナリオです。

ここにいくつかの提案があります。

最も一般的なケース:サービスを消費する必要があり、それらのメッセージを使用したい - Hugh の提案「生成された項目を追加...」を使用します。

あまり一般的でないケース:サービスも使用するスキーマを既に作成している (同じ) - Hugh の提案「生成された項目を追加...」を使用する - 独自のスキーマまたは作成されたスキーマから重複するスキーマを削除する

あまり一般的ではないケース:同じスキーマを使用する 2 つのサービスを利用したい - Hugh の提案「生成された項目を追加...」を使用する - 生成されたものの 1 つから重複するスキーマを削除する

私に起こったことはありません:サービスも使用するスキーマをすでに作成しています(同じではありませんが、ルート名と名前空間は同じです)-何もする必要はありません。これは機能しません(そのままでは)

于 2011-11-10T14:27:37.297 に答える