Да - хорошо ... модель для WCF говорит, что вы не должны пытаться вернуть сам XmlDocument. Вместо этого вы возвращаете пользовательский тип , определенный в вашей среде программирования. Этот тип должен быть размечен, чтобы указать, как он должен быть сериализован в XML. Затем, когда этот метод возвращает пользовательский тип, WCF неявно сериализует его в документ XML.
Я думаю, что вы хотите вернуть что-то вроде этого:
<People>
<Person Name="Nick"/>
<Person Name="Bonnie"/>
</People>
Но DataContractSerializer не любит выдавать атрибуты. Таким образом, используя WCF обычным способом для создания веб-служб XML, вы получите что-то вроде этого:
<People>
<Person><Name>Nick</Name></Person>
<Person><Name>Bonnie</Name></Person>
</People>
Для этого напишите свой код C # следующим образом:
namespace RestServicePublishing
{
[ServiceContract]
public interface IRestService
{
[OperationContract(Name="GetXML")]
[WebGet(UriTemplate = "/{param1}/{param2}")]
List<Person> GetXML(string param1, string param2);
}
}
Тогда тип должен выглядеть следующим образом:
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
}
[CollectionDataContract(Name = "People")]
public class People : List<Person>
{
}