2010-04-24 60 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生成自己。