如何从asmx Web服务返回纯XML?

时间:2010-05-06 21:59:30

标签: asp.net xml web-services xml-serialization asmx

我想要一个带有Get People()方法的asmx Web服务,该方法返回以下XML(不是SOAP响应):

<People>

    <Person>
        <FirstName>Sara</FirstName>
        <LastName>Smith</LastName>
    </Person>

    <Person>
        <FirstName>Bill</FirstName>
        <LastName>Wilson</LastName>
    </Person>

</People>

我该怎么做?

4 个答案:

答案 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根据需要创建/自定义。