ASP.NET Веб — сервис — Entity Framework

#asp.net #entity-framework-4

#asp.net #entity-framework-4

Вопрос:

У меня есть ASP.NET веб-сервис, использующий Entity Framework 4.0.

Когда я запускаю один из методов веб-сервиса локально, он выдает следующее исключение:

Система.Исключение InvalidOperationException: произошла ошибка при создании XML-документа. —> Система.Исключение InvalidOperationException: для сериализации XML типы, наследуемые от IEnumerable, должны иметь реализацию Add(System .Объект) на всех уровнях их иерархии наследования. Система.Данные.Объекты.ObjectQuery`1[[testGoogleEarth.Модель.Маркер, testGoogleEarth, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken= null]] не реализует Add(System.Объект). при System.Xml.Serialization.TypeScope.GetEnumeratorElementType(тип типа, теги типов и флаги) в System.Xml.Serialization.TypeScope.Импортируйте typedesc(тип типа, MemberInfo MemberInfo, логическую прямую ссылку) в System.Xml.Serialization.TypeScope.GetTypeDesc(тип типа, источник MemberInfo, логическая прямая ссылка, логический throwOnError) в System.Xml.Serialization.XmlSerializationWriter.Создайте исключение unknowntypeexception(тип типа) в System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(имя строки, строка ns, объект o, логический xsiType) в Microsoft.Xml.Serialization.Генерируемая сборка.XmlSerializationWriter1.Запись 1_object(строка n, строка ns, объект o, логическое значение IsNullable, логическое значение needType) в Microsoft.Xml.Serialization.Сгенерированный assembly.XmlSerializationWriter1.Write7_JsonResult(строка n, строка ns, JsonResult o, Boolean IsNullable, Boolean needType)
в Microsoft.Xml.Serialization.Созданный assembly.XmlSerializationWriter1.Write9_JsonResult(объект o) при System.Xml.Serialization.XmlSerializer.Сериализовать (XmlWriter XmlWriter, Object o, пространства имен XmlSerializerNamespaces, String encodingStyle, String id) — Конец трассировки стека внутренних исключений — в System.Xml.Serialization.XmlSerializer.Сериализуйте (XmlWriter XmlWriter, Object o, пространства имен XmlSerializerNamespaces, String encodingStyle, String id) в System.Xml.Serialization.XmlSerializer.Сериализуйте (TextWriter TextWriter, Object o, пространства имен XmlSerializerNamespaces) в System.Web.Services.Протоколы.XmlReturnWriter.Запись (ответ HttpResponse, поток OutputStream, возвращаемое значение объекта) в System.Web.Services.Протоколы.WebServiceHandler.WriteReturns(Object[] возвращает значения) в System.Web.Services.Протоколы.WebServiceHandler.Вызвать ()

Я запускаю этот образец на Windows Server 2008. Установлен .NET 4.0.

Есть идеи?

Спасибо

Комментарии:

1. Пожалуйста, задавая вопрос, вам не нужно указывать страницу исключения, вместо этого сначала опубликуйте свой код и укажите основное предложение в вашем исключении. Итак, мы можем вам помочь.

2. это все исключение, которое я получил! Я использую ASP.NET веб-сервис с Ef 4.0.

Ответ №1:

Существует проблема с XmlSerializer, который вы используете для сериализации запроса WCF по проводам. Любой класс IEnumerable в вашем графе объектов должен иметь общедоступный метод add. Смотрите некоторые подробности здесь
http://www.hanselman.com/blog/YouMustImplementTheAddSystemObjectMethodOnMyClassBecauseItInheritsFromIEnumerable.aspx

Комментарии:

1. Его ASP.NET Веб-служба, не являющаяся WCF, использующая EF 4.0

2. Извините, что я виноват, но проблема связана с сериализатором, а не с сервисом WCF asmx. Вы проверили график объектов?

3. Как проверить график объектов? Вообще-то понятия не имею. Спасибо

4. Для объектов, которые вы отправляете по проводам, проверьте их и их дочерний объект и убедитесь, что у любого из этих объектов есть определение IEnumerable , у них также должен быть метод Add