【问题标题】:WCF deserialization of type object Properties类型对象属性的 WCF 反序列化
【发布时间】:2020-11-06 16:33:22
【问题描述】:

我无法实现以下场景。

我们目前有一个方法,它需要一个“上下文”键值对列表。但是,该值可以是任何类型。

目标是使用 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 消息是“元素值不能有 要反序列化为对象的子内容。请使用 XmlNode[] 反序列化这种 XML 模式。'。

我不知道该怎么做。任何帮助表示赞赏。

我使用的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>

【问题讨论】:

    标签: wcf deserialization soapui


    【解决方案1】:

    在这种情况下,SoapUI 使用 .Net 技术,该技术不了解对象的目标类型。

    发送对象并非在所有平台上都有效。事实上,您也可能会在使用 .Net 客户端时遇到错误。你最好的选择是创建一个通用的 xml 表示值,并让所有客户端从 xml 中膨胀对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多