У меня есть модель данных 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 по этой ошибке возвращает очень мало. Почему это не работает?
Полагаю, одним из ответов было бы использование веб-приложения вместо веб-сайта, но у меня есть большой существующий сайт, к которому мне нужно добавить ссылку на службу, и я бы не стал преобразовывать ее.