Как вернуть чистый XML из веб-сервиса asmx? - PullRequest
5 голосов
/ 07 мая 2010

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

<People>

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

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

</People>

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

Ответы [ 4 ]

3 голосов
/ 07 мая 2010

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

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

3 голосов
/ 07 мая 2010

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

2 голосов
/ 07 мая 2010

Я вижу, что могу установить тип возвращаемого значения метода в 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;
}
1 голос
/ 07 мая 2010

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

...