【问题标题】:Programmatically set the MaxItemsInObjectGraph以编程方式设置 MaxItemsInObjectGraph
【发布时间】:2011-01-06 06:37:33
【问题描述】:

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

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

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

我在这里找到了这篇文章:How can I set the maxItemsInObjectGraph property programmatically from a Silverlight Application?,但似乎这仅适用于客户端,我需要在服务器上执行此操作。

【问题讨论】:

    标签: c# .net wcf bigdata


    【解决方案1】:

    在代码中:

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

    在配置中:

    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaivor">
          <serviceAuthorization impersonateCallerForAllOperations="True" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling maxConcurrentCalls="2147483647" />
          <dataContractSerializer maxItemsInObjectGraph="65775" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 事实上我已经是一个自定义序列化器(用于管理循环引用),它将 MaxItemsInObjectGraph 设置为默认值,因为它必须给它。我增加了它,现在它正在工作。谢谢
      【解决方案3】:

      您想在 ServiceBehavior 属性中指定属性。

       [ServiceContract]
       [ServiceBehavior(MaxItemsInObjectGraph=100000)] 
      public interface IDataService 
      {
         [OperationContract] 
         DataPoint[] GetData(); 
      }
      

      【讨论】:

      • ServiceBehavior 属性在实现类上,而不是在接口上。
      猜你喜欢
      • 1970-01-01
      • 2021-11-21
      • 2018-11-26
      • 2011-04-18
      • 2012-07-18
      • 2016-02-15
      • 2014-07-26
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多