在WCF rest方法中返回<bar> foo </bar>而不是<string> foo </string>

时间:2010-04-24 07:37:33

标签: .net wcf rest formatting

我在.NET 3.5中有一个REST Web方法:

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

响应的格式为<string>foo</string>,而我更喜欢<bar>foo</bar>。有谁知道这是怎么做到的吗?我觉得我错过了一些明显的东西。

1 个答案:

答案 0 :(得分: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();
        }

    }

最终我放弃了尝试让序列化程序完成我想要的操作,并开始从我的合同中返回“stream”并自行完成XML生成。