Как я возвращаю чистый XML из asmx веб-сервиса?

Я хочу asmx веб-сервис с методом GetPeople (), который возвращает следующий XML (НЕ ответ SOAP):

<People>

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

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

</People>

Как я могу сделать это?

5
задан User 7 May 2010 в 16:58
поделиться

4 ответа

Я вижу, что могу установить тип возвращаемого значения метода на 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;
}
2
ответ дан 14 December 2019 в 01:03
поделиться

Посмотрите на использование [ScriptMethod] атрибута.

3
ответ дан 14 December 2019 в 01:03
поделиться

Если вы не хотите, чтобы ответ был в SOAP-конверте, вы также не беспокоитесь о вызове веб-службы с помощью SOAP. Например, вы не создаете прокси-классы веб-ссылок и т.д. и просто используете http post или get для вызова веб-службы?

Если да, то вместо того, чтобы писать веб-службу, напишите файл обработчика ASHX. Затем вы можете просто установить Response.ContentType в text/xml и сделать Response.Write(XmlDocument.ToString()). Это вернет чистый XML без примесей плюс соответствующие http-заголовки.

3
ответ дан 14 December 2019 в 01:03
поделиться

Вы можете использовать Soap Extensions для создания/настройки под свои нужды.

1
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: