返回XML的WCF服务

本文关键字:服务 WCF XML 返回 | 更新日期: 2023-09-27 18:11:04

我有一个我认为是相当简单的问题,但未能在网上找到任何答案。我有一个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;
}

返回XML的WCF服务

将根节点设置为字符串集合,集合中的每个项目的项目名称为"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);