【问题标题】:WCF Service returning XMLWCF 服务返回 XML
【发布时间】:2014-06-30 20:35:11
【问题描述】:

我有一个我认为是相当简单的问题,但无法在网上找到任何答案。我有一个 WCF 服务,它接受三个参数并将返回一个数字列表(id)。现在三个传入参数被完全忽略,我只是在测试返回值。这就是我遇到问题的地方。我需要以 XML 格式返回候选 ID 列表。规范要求列表如下所示:

<Disabled>
       <Candidate>123456789</Candidate>
       <Candidate>ABCDEFGHI</Candidate>
</Disabled>

如何让 WCF 服务返回这样的数据。使用列表时,数据返回如下:

<Disabled>
     <Candidate>
            <a:string>test</a:string>
            <a:string>test1</a:string>
     </Candidate>
<Disabled>

有没有什么方法可以在不要求我们的客户更改其规格的情况下将其更改为如上所示返回?

这是我的请求和响应的数据合同:

 [DataContract]
    public class RequestDeactivated
    {
        [DataMember(Order = 0)]
        public string companyId { get; set; }
        [DataMember(Order = 1)]
        public string companyToken { get; set; }
        [DataMember(Order = 2)]
        public int verificationToken { get; set; }
    }

    [DataContract]
    public class ResponseDeactivated
    {
        [DataMember]
        public List<string> Candidate { get; set; }

    }

我从未创建过返回此类列表的服务,因此我们将不胜感激。 谢谢

编辑:我已经包含了处理实际返回内容的代码。请注意,我目前只是在测试,并没有在此处添加逻辑。

public ResponseDeactivated Deactivate(RequestDeactivated data)
{
    ResponseDeactivated d = new ResponseDeactivated();
    d.Candidate = new List<string>();
    d.Candidate.Add("test");
    d.Candidate.Add("test1"); 
    return d;
}

【问题讨论】:

  • 返回ResponseDeactivated 不需要处理xml。这些框架在这里为您完成这些工作(xml/json 序列化/反序列化等)。
  • 当我返回 ResponseDeactivated 时,我得到了我不想要的 a:string 格式。我将更新我的问题,以便显示我处理当前返回内容的代码

标签: c# xml wcf


【解决方案1】:

将根节点设置为字符串集合,其中集合中的每个项目的项目名称为“Candidate”。

[CollectionDataContract(ItemName = "Candidate")]
public class ResponseDeactivated : Collection<string>
{

}

然后你可以这样序列化:

ResponseDeactivated o = new ResponseDeactivated();
o.Add("123456789");
o.Add("ABCDEFGHI");

DataContractSerializer serializer = new DataContractSerializer(typeof(ResponseDeactivated));            

serializer.WriteObject(stream, o);

【讨论】:

  • 现在正在调查。非常感谢您的回复。我会告诉你它是否有效并将其标记为答案。
  • 编辑:您的解决方案奏效了!非常感谢。在做了一些研究之后,我发现我什至不需要序列化 ​​ResponseDeativated。似乎一切都为我处理好了。我简单地将 DataContract 更改为 CollectionDataContract 并删除了我拥有的数据成员。如果其他人有问题我很乐意为他们上传我的工作代码。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多