以编程方式设置MaxItemsInObjectGraph

J4N*_*J4N 4 .net c# wcf bigdata

我有一个在客户端和服务器端使用WCF的应用程序。返回大量数据时出现错误:

尝试序列化参数http://tempuri.org/:GetCurrentDatabaseObjectsResult时发生错误。InnerException消息是“在对象图中可以序列化或反序列化的最大项目数为'65535'。更改对象图或增加MaxItemsInObjectGraph配额。'。有关更多详细信息,请参见InnerException。

(最重要的是我必须增加MaxItemsInObjectGraph)。

我在这里找到了这篇文章:如何从Silverlight应用程序中以编程方式设置maxItemsInObjectGraph属性?但似乎这仅适用于客户端,我需要在服务器上执行此操作。

Fel*_*lix 5

在代码中:

foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
{
    DataContractSerializerOperationBehavior dataContractBehavior =
                op.Behaviors.Find<DataContractSerializerOperationBehavior>()
                as DataContractSerializerOperationBehavior;
    if (dataContractBehavior != null)
    {
        dataContractBehavior.MaxItemsInObjectGraph = 100000;
    }
}
Run Code Online (Sandbox Code Playgroud)

在配置中:

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaivor">
      <serviceAuthorization impersonateCallerForAllOperations="True" />
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceThrottling maxConcurrentCalls="2147483647" />
      <dataContractSerializer maxItemsInObjectGraph="65775" />
    </behavior>
  </serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)