2010-03-31 88 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