我想要一个带有Get People()方法的asmx Web服务,该方法返回以下XML(不是SOAP响应):
<People>
<Person>
<FirstName>Sara</FirstName>
<LastName>Smith</LastName>
</Person>
<Person>
<FirstName>Bill</FirstName>
<LastName>Wilson</LastName>
</Person>
</People>
我该怎么做?
答案 0 :(得分:3)
使用[ScriptMethod]
属性。
答案 1 :(得分:3)
如果您不希望Response位于SOAP信封中,您是否也不想使用SOAP调用Web服务。例如您是不是创建代理类Web引用等,只是使用http post或者调用Web服务?
如果是,而不是编写Web服务,请编写ASHX处理程序文件。然后,您可以简单地将Response.ContentType设置为text / xml并执行Response.Write(XmlDocument.ToString())。这将返回纯粹的未填充XML以及相关的http标头。
答案 2 :(得分:2)
我看到我可以将方法的返回类型设置为XmlDocument。这似乎有效。
[WebMethod]
public XmlDocument ReturnXml()
{
XmlDocument dom = new XmlDocument();
XmlElement people = dom.CreateElement("People");
dom.AppendChild(people);
XmlElement person = dom.CreateElement("Person");
people.AppendChild(person);
XmlElement firstName = dom.CreateElement("FirstName");
person.AppendChild(firstName);
XmlText text = dom.CreateTextNode("Bob");
firstName.AppendChild(text);
// load some XML ...
return dom;
}
答案 3 :(得分:1)
您可以使用Soap Extensions根据需要创建/自定义。