2010-03-31 124 views
3

我正在尝试将JSON数组传递给WCF服务。但它似乎并不奏效。实际上,我将一个数组[GetStudents]拉出服务,并将完全相同的数组发送回服务[SaveStudents],并且没有收到任何数据(空数组)。 JSON数组的格式为:将JSON数组传递给WCF Web服务

[ 
    {"Name":"John","Age":12}, 
    {"Name":"Jane","Age":11}, 
    {"Name":"Bill","Age":12} 
] 

而且合同是格式如下:

//Contracts 
[DataContract] 
public class Student{ 
    [DataMember]public string Name { get; set; } 
    [DataMember]public int Age{ get; set; } 
} 

[CollectionDataContract(Namespace = "")] 
public class Students : List<Student> 
{ 
    [DataMember]public Endorsements() { } 
    [DataMember]public Endorsements(IEnumerable<Student> source) : base(source) { } 
} 

//Operations 
public Students GetStudents() 
{ 
    var result = new Students(); 
    result.Add(new Student(){Name="John",12}); 
    result.Add(new Student(){Name="Jane",11}); 
    result.Add(new Student(){Name="Bill",12}); 
    return result; 
} 

//Operations 
public void SaveStudents(Students list) 
{ 
    Console.WriteLine(list.Count); //It always returns zero 
} 

它有发送阵列到WCF REST服务的特定方法是什么?

回答

1

我有类似的问题。 我从浏览器调用服务,问题在于Firefox将请求内容类型从“application/json”动态地更改为“application-json; charset = utf-8”。 如果您从浏览器调用服务,请使用非Firefox浏览器进行测试,如果是这种情况,您需要从请求内容类型标题中删除字符集

+0

@Ash:这是我确切的问题。该服务适用于Google Chrome,但在FireFox中失败。有没有解决方法:我无法控制REST服务! – Tawani 2010-04-06 20:21:23

+0

我找不到客户端解决方案。 是xml类型(application/xml)的一个选项吗? – Ash 2010-04-08 21:27:44

+0

即使Firefox添加了(根据FireBug),我的WCF 4.0服务也能正常工作。也许它在3.5中被破坏了? – CTarczon 2011-11-08 22:04:21