«Объект EntityReference не может быть сериализован» при сериализации с веб-сайта ASP.NET, но работает нормально в веб-приложении ASP.NET - PullRequest
3 голосов
/ 22 марта 2010

У меня есть модель данных Entity Framework. Часть модели является клиентом. Веб-служба предоставляет метод для получения клиента и для получения обновленной версии этого клиента.

Чтобы проверить это, я создал новое веб-приложение ASP.NET Приложение , (Решение> Добавить> Новый проект> Веб-приложение ASP.NET), а затем добавил ссылку на ссылку на мою службу, используя стандартную кнопку Добавить. Справочник по сервису. Затем я звоню в службу, используя следующий код:

var client = new CustomerServiceClient();
var customer = client.GetCustomerByID(18); // get it
customer.LimitDown = 100; // change it
client.SaveCustomer(customer); // persist it

Все работает как положено.

Теперь я делаю то же самое, но на этот раз с ASP.NET Web Сайт (Решение> Добавить> Новый веб-сайт> Веб-сайт ASP.NET). Я добавляю ссылку аналогичным образом, копирую и вставляю приведенный выше код в новый сайт. Но теперь я получаю следующее исключение на 4-й строке:

System.InvalidOperationException Объект EntityReference не может быть сериализованная. Этот тип объекта не может быть сериализованным, когда RelationshipManager принадлежит к объект сущности, который не реализует IEntityWithRelationships.

Ошибка источника:

Строка 2474: Строка 2475:
общественности SkyWalkerCustomerService.OperationResult SaveCustomer (SkyWalkerCustomerService.Customer Заказчик) {Строка 2476:
вернуть base.Channel.SaveCustomer (заказчик); Строка 2477:} Строка 2478:}

Трассировка стека:

System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде reqMsg, IMessage retMsg) + 9475203
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) + 345
SkyWalkerCustomerService.ICustomerService.SaveCustomer (Заказчик клиент) + 0
SkyWalkerCustomerService.CustomerServiceClient.SaveCustomer (Заказчик клиент) в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30128 \ Temporary ASP.NET Файлы \ testsite2 \ dd2bcf8d \ f95604ff \ App_WebReferences.fz4h7x7l.0.cs: 2476 _Default.Page_Load (Отправитель объекта, EventArgs e) в C: \ Users \ Mike \ Documents \ Хранилище \ ВКА \ SkyWalker \ TestSite2 \ Default.aspx.cs: 17 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, объект o, объект t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object отправитель, EventArgs e) + 35
System.Web.UI.Control.OnLoad (EventArgs д) + 91
System.Web.UI.Control.LoadRecursive () +61 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 1966

Поиск в Google по этой ошибке возвращает очень мало. Почему это не работает?

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

1 Ответ

0 голосов
/ 23 марта 2010

Временный обходной путь - я изменил версию веб-сайта .NET Framework на 3.5, и теперь он работает правильно.Это хорошо для моего проекта, но я хотел бы знать для дальнейшего использования, почему возникла первоначальная проблема.

...