C# 返回XML的WCF服务
我有一个我认为相当简单的问题,但一直无法在网上找到任何答案。我有一个WCF服务,它接受三个参数并返回一个数字列表(ID)。现在,三个传入参数被完全忽略,我只是测试返回值。这就是我遇到问题的地方。我需要以XML形式返回候选ID的列表。规范要求清单如下所示:C# 返回XML的WCF服务,c#,xml,wcf,C#,Xml,Wcf,我有一个我认为相当简单的问题,但一直无法在网上找到任何答案。我有一个WCF服务,它接受三个参数并返回一个数字列表(ID)。现在,三个传入参数被完全忽略,我只是测试返回值。这就是我遇到问题的地方。我需要以XML形式返回候选ID的列表。规范要求清单如下所示: <Disabled> <Candidate>123456789</Candidate> <Candidate>ABCDEFGHI</Candidate> &
<Disabled>
<Candidate>123456789</Candidate>
<Candidate>ABCDEFGHI</Candidate>
</Disabled>
123456789
ABCDEFGHI
如何让WCF服务返回这样的数据。使用列表时,返回的数据如下所示:
<Disabled>
<Candidate>
<a:string>test</a:string>
<a:string>test1</a:string>
</Candidate>
<Disabled>
测试
测试1
有没有办法在不要求我们的客户更改其规格的情况下,将其更改为如上所示的退货
以下是我的请求和响应数据契约:
[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; }
}
[DataContract]
公共类请求已停用
{
[数据成员(订单=0)]
公共字符串companyId{get;set;}
[数据成员(顺序=1)]
公共字符串companyToken{get;set;}
[数据成员(顺序=2)]
public int-verificationToken{get;set;}
}
[数据合同]
公共类响应已激活
{
[数据成员]
公共列表候选{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=新ResponseDeactivated();
d、 候选者=新列表();
d、 添加(“测试”);
d、 添加(“测试1”);
返回d;
}
将根节点设置为字符串集合,集合中的每个项目都有一个项目名称“候选”
Return
ResponseDeactivated
无需处理xml。这些框架在这里为您完成这些工作(xml/json序列化/反序列化等)。我将更新我的问题,以便显示我处理当前返回内容的代码。非常感谢您的回复。我会让你知道它是否有效,并将其标记为答案。编辑:你的解决方案有效!非常感谢你。在做了一点研究之后,我发现我甚至不需要序列化ResponseDativated。看来一切都是为我处理的。我简单地将DataContract更改为CollectionDataContract,并删除了我拥有的datamember。如果其他人有问题,我很乐意为他们上传我的工作代码。再次感谢
[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);