WCF WebHttp & Cycles Предотвращение сериализации - PullRequest
2 голосов
/ 21 июня 2011

Я создал службу WCF WebHttp, руководствуясь следующей статьей.

http://blogs.msdn.com/b/endpoint/archive/2010/01/07/getting-started-with-wcf-webhttp-services-in-net-4.aspx

У меня все отлично работает, кроме одной части. Когда я запрашиваю список контактов из моей базы данных, он возвращает их нормально. Тем не менее, когда я использую ту же структуру кода для получения списка учетных записей, он говорит мне:

Эта веб-страница недоступна

Однако я могу запросить одну учетную запись без проблем. Сначала я подумал, что это может быть зависимость, когда он пытается загрузить все дочерние объекты в Account и так далее. Но когда я проверяю результат, возвращаемый из базы данных, это очень маленький набор данных. (42 записи) Поэтому я подумал, что это может быть связано с сериализацией объектов, поэтому я применил к файлу свой собственный маленький метод сериализатора Json и получил следующую ошибку.

Граф объектов для типа «MyNamespace.Model.Account» содержит циклы и не может быть сериализован, если отслеживание ссылок отключено.

Итак, я выполнил поиск в Интернете, и все результаты указывают на единственную статью.

http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx

Однако эта статья мне не помогает, так как она недопустима для служб WCF WebHttp.

Есть мысли?

1 Ответ

0 голосов
/ 21 июня 2011

Эта статья действительна и для сервисов WCF WebHttp - вам просто нужно получить ссылку на ServiceHost для этих сервисов.В примере этого сообщения в блоге служба активируется с использованием маршрутов ASP.NET и WebServiceHostFactory, который является компонентом, создающим экземпляр ServiceHost, который будет использоваться этой службой.

Таким образом, вам придется создать собственную фабрику (возможно, переопределяя WebServiceHostFactory), и в CreateServiceHost вы вызовете базовый метод для получения хоста, измените его в соответствии со статьей Sowmy, а затем вернете.Недавно вы опубликовали статью о фабриках хостов службы на http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx,, где вы можете найти дополнительную информацию об этом компоненте.

...