我成立了一个WCF Web服务中的Visual Web Developer 2010速成使用4.0框架,并将其转换为RESTful服务using this tutorial如何在RESTful .NET WCF Web服务中返回XML?
我可以修改它符合我的心意,接受URL参数,就像这样:
namespace RestServicePublishing
{
[ServiceContract]
public interface IRestService
{
[OperationContract(Name="GetXML")]
[WebGet(UriTemplate = "/{param1}/{param2}")]
XmlDocument GetXML(string param1, string param2);
}
}
我遇到的问题是试图返回这样的一个XML文档时,我得到一个“类型‘System.Xml.XmlDocument’无法序列”错误:
namespace RestServicePublishing
{
public class RestService : IRestService
{
public XmlDocument GetXML(string param1, string param2)
{
//I am not using the parameters currently, I would just like to see if
//i can return XML first with this simple example:
StringBuilder sb = new StringBuilder();
System.Xml.XmlWriter writer = XmlWriter.Create(sb);
writer.WriteStartDocument();
writer.WriteStartElement("People");
writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();
writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
XmlDocument xmlDocument = new Xml.XmlDocument();
xmlDocument.LoadXml(sb.ToString());
return xmlDocument;
}
}
}
我知道re必须是设置XML文档并将其返回的更好方法..非常感谢任何帮助!
预先感谢您!
对不起,听起来像这样一个noob,但我该如何处理你给的类型的例子?我创建了一个名为'Person'的新类,并放入该代码中,但是从那里我对接下来要做的事情有点困惑。再次感谢您的回应! – AngeloS 2011-03-23 23:58:59
我想通了..创建两个类:1.Person和2.People并在上面的代码。然后在GetXML()方法中,让它返回列表(同时,更改服务合同中的返回类型)。最后,创建一个新的人员列表' ppl = new List ();',然后实例化一个新的Person,如'Person prsn = new Person();'并为它添加一个名称,然后通过ppl.Add(new People {prsn})将该Person添加到人员列表中; ...最后返回'返回新列表(ppl); –
AngeloS
2011-03-24 00:35:29
我觉得困惑是因为你不需要GetXML方法。如果你的服务只是返回Person(或者列表),那么WCF会为你做XML的东西。 :) –
Tridus
2011-03-24 01:44:47