我在.NET 3.5中有一个REST Web方法:
[OperationContract]
[WebInvoke(UriTemplate = "", Method = Verbs.Get)]
public string GetBar()
{
return "foo";
}
响应的格式为<string>foo</string>
,而我更喜欢<bar>foo</bar>
。有谁知道这是怎么做到的吗?我觉得我错过了一些明显的东西。
答案 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生成。