У меня есть веб-сервис, который всегда возвращает ReturnObject, который является классом, который я написал следующим образом:
public class ReturnObject
{
public Status Status { get; set; }
public Object Data { get; set; }
}
Когда я возвращаю один объект, такой как int или string и т. д. в Data, все в порядке, но когда я хочу вернуть список типизированных объектов, клиент, который запускает веб-службу как WebReference, получает это исключение:
System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> System.InvalidOperationException: Произошла ошибка при создании XML-документа ---> System.InvalidOperationException: Typen System.Collections.Generic.List`1[[Transticket.Domain.Models.ApsisMailingList, Transticket.Domain, Version= 1.0.0.0, культура = нейтральная, PublicKeyToken = null]] могут быть добавлены в контекст. vid System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(имя строки, String ns, Object o, Boolean xsiType) vid Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType ) vid Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_ReturnObject(String n, String ns, ReturnObject o, Boolean isNullable, Boolean needType)
vid Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_GetListsResponse(Object[] p) vid Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(Object objectToSerialize, XmlSerializationWriter Writer) vid System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) --- Slut på сбор стека для внутренней среды ---
vid System.Xml.Serialization.XmlSerializer .Serialize(XmlWriter xmlWriter, Object o, пространства имен XmlSerializerNamespaces, String encodingStyle, String id) vid System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream) vid System.Web.Services.Protocols.WebServiceHandler. WriteReturns(Object[] returnValues) vid System.Web.Services.Protocols.WebServiceHandler.Invoke() --- Шлюха в стеке для внутреннего доступа ---
Это исключение не в веб-службе, а в клиентском вызове веб-службы после возврата данных.
Если я делаю там еще один ReturnObject и указываю список типизированных объектов в качестве данных, это работает хорошо.
У кого-нибудь есть идея, как я могу это обобщить? Я всегда думал, что List — это тип Object, но выглядит как ошибка .NET, или я что-то пропустил?