WCF WebHttp&循环防止序列化

时间:2011-06-21 02:57:09

标签: wcf serialization webhttp

我使用以下文章作为指南创建了一个WCF WebHttp服务。

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

除了一部分,我的一切都很好。当我查询从我的数据库中获取联系人列表时,它返回正常。但是,当我使用相同的代码结构来获取帐户列表时,它会告诉我:

此网页不可用

但是,我可以查询单个帐户没问题。起初我认为它可能是一个依赖性的东西,它试图加载帐户上的所有子对象等等。但是,当我检查从数据库返回的结果时,它是一组非常小的数据。 (42条记录)所以我认为它可能与对象的序列化有关,所以我对文件做了我自己的小Json序列化方法,并得到以下错误。

“MyNamespace.Model.Account”类型的对象图包含周期,如果禁用参考跟踪,则无法序列化。

所以我在网上进行了搜索,所有结果都指向一篇单独的文章..

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

但是,本文对我没有帮助,因为它对WCF WebHttp服务无效。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

该文章对WCF WebHttp服务也有效 - 您只需要获取对这些服务的ServiceHost的引用。在该博客文章的示例中,使用ASP.NET路由和WebServiceHostFactory激活服务,ServiceHost是创建该服务使用的{{1}}实例的组件。

所以你必须创建自己的工厂(可能会覆盖WebServiceHostFactory),而在CreateServiceHost上你要调用基本方法来获取主机,根据Sowmy的文章修改它,然后返回它。

我最近在http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx发布了一篇关于服务主机工厂的文章,您可以在其中找到有关此组件的更多信息。