Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回XML的WCF服务_C#_Xml_Wcf - Fatal编程技术网

C# 返回XML的WCF服务

C# 返回XML的WCF服务,c#,xml,wcf,C#,Xml,Wcf,我有一个我认为相当简单的问题,但一直无法在网上找到任何答案。我有一个WCF服务,它接受三个参数并返回一个数字列表(ID)。现在,三个传入参数被完全忽略,我只是测试返回值。这就是我遇到问题的地方。我需要以XML形式返回候选ID的列表。规范要求清单如下所示: <Disabled> <Candidate>123456789</Candidate> <Candidate>ABCDEFGHI</Candidate> &

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

<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);