1

次のシナリオを達成するのに問題があります。

現在、「コンテキスト」キーと値のペアのリストを期待するメソッドがあります。ただし、値は任意の型にすることができます。

目標は、WCF を使用してこのメ​​ソッドを利用できるようにすることです。だから私は

public List<Element> Transform(List<Element> elements)
{
... Transformation of elements takes place
}

[DataContract(Namespace = Constants.NAMESPACE)]
public struct Element
{
    [DataMember(Order = 0, IsRequired = true)]
    public string Key;
    [DataMember(Order = 1, IsRequired = true)]
    public object Value;
}

.Net テスト プロジェクトを使用すると、すべて正常に動作します。

ただし、SOAP UI を使用してこのサービスを呼び出すと、次のエラー メッセージが表示されます。

メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました: パラメータ要素を逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「Element Value cannot have child content to be deserialized as an object.」でした。このパターンの XML を逆シリアル化するには、XmlNode[] を使用してください。

どうしたらいいのか分からず困っています。助けていただければ幸いです。

私が使用するxmlはこれです:

  <ws:Transform>
     <ws:elements>
           <ws:Element>
              <ws:Key>Key1</ws:Key>
              <ws:Value>A</ws:Value>
           </ws:Element>
           <ws:Element>
              <ws:Key>Key2</ws:Key>
              <ws:Value>B</ws:Value>
           </ws:Element>
        <ws:ScriptName>SetVariable</ws:ScriptName>
     </ws:elements>
  </ws:Transform>
4

1 に答える 1

1

この場合、SoapUI は、オブジェクトのターゲット タイプを認識しない .Net テクノロジを使用します。

送信オブジェクトは、すべてのプラットフォームで有効ではありません。実際、.Net クライアントでもエラーが発生する場合があります。あなたの最善の策は、値の一般的なxml表現を作成し、すべてのクライアントにxmlからオブジェクトをインフレートさせることです

于 2013-03-29T16:01:45.350 に答える