WCF服务导致错误' ...'对象图中可以序列化或反序列化的最大项目数为“65536 ...”'在服务器机器中

时间:2017-08-26 07:00:20

标签: c# wcf iis

我开发了一个在远程服务器上使用WCF服务的控制台应用程序。此应用程序发送的项目大约超过50000.当我在自己的计算机上运行应用程序时,没有错误。转移成功。

但是,当我将应用程序复制到Windows Server 2008计算机然后运行它时,会发生错误:

  

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

顺便说一下,WCF服务在远程桌面上,不受我控制。我确信,在配置中这部分存在

<behaviors>
    <serviceBehaviors>
        <behavior>
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="false"/>
            <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Shorty,我使用WCF的控制台应用程序在我的桌面上运行,但它在我的Windows Server 2008计算机上无效。

1 个答案:

答案 0 :(得分:0)

您还需要在客户端添加类似的配置。这是示例配置。请根据您的服务详情进行适当的更改。

<system.serviceModel>
<bindings>
    <basicHttpBinding>
        <binding name="BasicHttpBinding_IMyService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647">
            <readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </binding>
    </basicHttpBinding>
</bindings>
<client>
    <endpoint address="http://XXXX/MyService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" contract="MyServiceReference.IMyService" name="BasicHttpBinding_IMyService" behaviorConfiguration="MyServiceBehaviour"/>
</client>
<behaviors>
    <endpointBehaviors>
        <behavior name="MyServiceBehaviour">
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
    </endpointBehaviors>
</behaviors>
</system.serviceModel>