2017-08-26 41 views
0

我开发了一个控制台应用程序,它在远程计算机上使用WCF服务服务器。此应用程序发送约50000以上的项目。当我在我自己的计算机上运行应用程序时,没有错误。转让成功。WCF服务导致错误'...'在服务器机器中,对象图中可以序列化或反序列化的项的最大数量为'65536 ...'

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

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

顺便说一句,WCF服务是在远程桌面上,而不是由我控制。我相信,在配置这部分存在

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

矮个子,我的控制台应用程序,它使用WCF工作在我的桌面,但它不是在我的Windows Server 2008的机器工作。

+0

你可以在远程机器上发布配置中的节吗?根据错误消息,您发布的内容不是实际存在的内容(我相信65536是默认值)。 – Tim

回答

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> 
相关问题