2

我得到一個異常時,有太多的對象返回:WCF方法拋出的最大項目的對象圖中的例外是「65536」

格式化,而試圖反序列化消息引發了異常:有一個嘗試反序列化參數http://.../Contract:GetBlaBlaResult時出錯。 InnerException消息是'在對象圖中可以序列化或反序列化的項的最大數量是'65536'。更改對象圖或增加MaxItemsInObjectGraph配額。 」。有關更多詳細信息,請參閱InnerException。

我看着它,並在服務器端下的行爲說:

<behaviors> 
    <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
     <dataContractSerializer maxItemsInObjectGraph="2147483646"/> 

     ... 

而在客戶端:

<behaviors> 
    <endpointBehaviors> 
     <behavior name="maxItems"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 

但它似乎被忽略,除了保持產生。

的事情是我使用的XmlSerializer(在元素屬性):

[ServiceContract(Namespace = "http://BlaBla.com/webservices/BlaBlaService")] 
[XmlSerializerFormat(SupportFaults = true)] 
public interface IBlaBlaServices 
{ 
    [OperationContract] 
    BlaBlaResponse GetBlaBla(BlaBlaRequestMessage searchBlaBlaRequest); 
} 

和異常,你可以看到,是指DataContractSerializer的(所以是我在上面添加的配置) 。

這是XmlSerializer弄亂了事情嗎?

有人可以提醒嗎?

感謝很多:)

+0

http://stackoverflow.com/questions/7476853/wcf-error-maximum-number-of-items-that-c​​an-be-serialized-or-deserialized-in-an – 2013-01-30 07:39:23

回答

2

只是爲了確保,你在服務配置和maxItems行爲在客戶端配置(在behaviorConfiguration屬性)的端點定義應用MyServiceBehavior行爲服務定義?

+0

是的,雖然在我看來很奇怪,因爲它應該是跨平臺的,而告訴客戶如何配置其邊的想法看起來很尷尬。 – graumanoz 2010-08-31 14:10:59

+0

是的,的確有點尷尬。如果您應用ServiceBehavior屬性來設置MaxItemsInGraph是否有效? [ServiceBehavior(MaxItemsInObjectGraph = 2147483646)](關於服務實現,而不是合同)。 – Jeff 2010-08-31 14:16:18

+0

感謝Jeffn825的關注:) 設置行爲畢竟是解決方案,而XmlSerializer與問題無關。 我只是錯誤的行爲名稱... – graumanoz 2010-08-31 15:36:44

相關問題