2010-04-24 34 views
0

我在.NET 3.5的REST Web方法:返回<bar>富的</bar>代替<string>富</string>在WCF休息方法

[OperationContract] 
[WebInvoke(UriTemplate = "", Method = Verbs.Get)] 
public string GetBar() 
{ 
    return "foo"; 
} 

響應被格式化爲<string>foo</string>,而我寧願<bar>foo</bar>來代替。有誰知道這是怎麼做到的嗎?我覺得我失去了一些明顯的東西。

+0

爲什麼社區wiki? – kennytm 2010-04-24 08:20:21

+0

爲什麼不呢?如果有人發現一個錯字,並且感覺像是在重述這個問題。沒有我的pb :-) – 2010-04-24 08:49:35

+1

有足夠代表的人可以在不編輯社區維基的情況下編輯您的問題。社區wiki的問題在於,沒有人能夠得到任何回答。 – 2010-04-24 13:33:35

回答

1

從WCF服務返回XML時,通常使用其中一個序列化器,即DataContractSerializer或XmlSerializer。我無法讓DataContractSerializer返回你正在尋找的東西,但這裏有一種與XmlSerializer一起工作的方式。

[WebGet(UriTemplate = "bar")] 
[OperationContract] 
public bar GetData() { 
    return new bar(); 
} 



    [XmlRoot(Namespace = "")] 
    public class bar : IXmlSerializable { 

     public void WriteXml(XmlWriter writer) { 
      writer.WriteString("foo"); 
     } 

     public XmlSchema GetSchema() { 
      throw new NotImplementedException(); 
     } 

     public void ReadXml(XmlReader reader) { 
      throw new NotImplementedException(); 
     } 

    } 

最後,我只是放棄了試圖讓串行做什麼,我想剛開始恢復從我的合同「流」,做XML生成自己。