2011-04-04 24 views
3

我在WCF中創建了一個REST服務。我面臨以下問題在WCF中反序列化對象時出錯

反序列化System.Collections.Generic.IList類型的對象時出現錯誤。已超出最大讀取深度(32),因爲正在讀取的XML數據的嵌套級別超過配額允許的級別。通過更改創建XML閱讀器時使用的XmlDictionaryReaderQuotas對象的MaxDepth屬性,可以增加此配額。

我沒有在配置中指定任何類型的綁定,因爲我已根據REST入門工具包開發了該服務。請告訴我如何解決這個問題。

代碼有時工作正常,但它確實會拋出錯誤。

+3

1)**發佈堆棧跟蹤** 2)包含定義您嘗試序列化的列表的類,它看起來像一個**循環引用** – Aliostad 2011-04-04 11:32:20

回答

6

就我而言,問題在於我從數據上下文中返回了實體框架對象。解決方法是在重新調整每個對象之前分離它們。

0

今天我有同樣的問題。如果您沒有在數據合同中正確設置KnowType和IsReference,它可能是循環引用。 先檢查這些點。真的!

但是當你面對這種行爲時。

該代碼有時工作正常,但它確實會拋出錯誤。

您還應該檢查您在線路上發送的圖形是否很深且很複雜(如深度超過兩個導航屬性)。那麼它可能就是您的綁定配置中ReaderQuotas的MaxDepth太低。當您的最深導航屬性爲空時,您的服務將起作用,但當它們包含至少一個元素時會引發此錯誤。這種配置的

默認值是32,所以給一個嘗試64

現在我們可以爭論上使用的服務與WCF中配置低默認值太多深圖的設計質量較差。

我不是說你必須在較小的部分打破你的圖,但你應該。