WCF方法抛出对象图中最大项的异常是'65536'

时间:2010-08-31 13:59:51

标签: wcf datacontractserializer xmlserializer servicebehavior

如果返回的对象太多,我会收到异常:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数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会搞砸事情吗?

有人可以提出建议吗?

非常感谢:)

1 个答案:

答案 0 :(得分:2)

为了确保,您是将MyServiceBehavior行为应用于服务配置中的服务定义,还是将maxItems行为应用于客户端配置中的端点定义(behaviorConfiguration属性)?