2011-06-21 56 views
2

我曾嘗試使用下面的文章作爲指導創建一個WCF服務WebHttp ..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服務。

有什麼想法?

回答

0

那篇文章的有效期爲WCF WebHttp服務,以及 - 你只需要去ServiceHost的這些服務的參考。在博客中的示例中,服務被使用ASP.NET路由激活,並且WebServiceHostFactory,這是它創建ServiceHost實例由該服務所使用的組件。

所以你必須創建自己的工廠(可能覆蓋WebServiceHostFactory),並在CreateServiceHost上調用基本方法來獲取主機,根據Sowmy的文章對其進行修改,然後將其返回。

我最近張貼了關於服務主機工廠的一篇文章在http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx,在這裏你可以找到有關此組件的詳細信息。

+0

我試圖現在使用這種方法。但是,它看起來不像它支持的JSON,它是我們使用的傳輸格式。我仍然試圖確定這是否可行,但如果您有更多的建議,我可以使用它。 – Altonymous

+0

JSON序列化不支持循環 - 您需要中斷循環或選擇另一種序列化格式。 – carlosfigueira

+0

我很害怕那個。在我讀到你的評論之前,我得出了同樣的結論,但我不想相信它。我仍然不想相信,但我想我沒有太多的選擇。你有關於如何打破週期的建議嗎?改變數據庫是一種選擇。現在它基本上是一個父母/孩子/父母/ ......的關係。 – Altonymous