WCF错误-';对象图中可以序列化或反序列化的最大项数为';65536';

本文关键字:65536 反序列化 对象图 错误 序列化 WCF | 更新日期: 2023-09-27 18:24:30

在服务器和客户端添加maxItemsInObjectGraph="2147483647"参数后,我遇到了上述错误。然而,在我的项目中,可以使用"datatable"对象传输大量数据,而不会出现任何问题。此错误发生在使用"List<>"对象传输的大量数据中
我的dotnetframework是4.0,但我发现这个错误在dotnetframework4.5中找不到,并且大量数据可以使用"List<>"对象传输而不会出错。这也是Windows的基础项目。

请任何人都能解决这个问题。以下是我的服务器和客户端应用程序配置。

谢谢!!!

我的服务;

<system.serviceModel>
   <behaviors>
    <serviceBehaviors>
      <behavior name="CommonBehavior">
        <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        <serviceMetadata httpGetEnabled="false"/>
        <serviceDebug includeExceptionDetailInFaults="true" />
        <serviceThrottling
          maxConcurrentSessions="1200"
          maxConcurrentCalls="192"
          maxConcurrentInstances="1392"
           />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <bindings>
    <netTcpBinding>
      <binding maxReceivedMessageSize="2147483647" name="netTcpBinding" transferMode="Streamed" listenBacklog="2000" maxBufferPoolSize="2147483647"  maxBufferSize="2147483647"  maxConnections="2000"
                       closeTimeout="08:00:00" openTimeout="08:00:00" receiveTimeout="08:00:00" sendTimeout="08:00:00">
        <readerQuotas maxDepth="2147483647"  maxStringContentLength="2147483647"  maxArrayLength="2147483647"  maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        <reliableSession ordered="true" inactivityTimeout="08:00:00"
             enabled="false" />
        <security mode="None">
          <transport clientCredentialType ="None"/>
        </security>
      </binding>
    </netTcpBinding>
  </bindings>

  <services>
    <service behaviorConfiguration="CommonBehavior" name="MyBLL">
      <endpoint address="" binding="netTcpBinding" bindingConfiguration="netTcpBinding" name="MyEndPoint" contract="IMy">
        <identity>
          <dns value="localhost"/>
        </identity>
      </endpoint>
      <host>
        <baseAddresses>
          <add baseAddress="net.tcp://localhost:8000/MySVC"/>
        </baseAddresses>
      </host>
    </service>
  </services>
</system.serviceModel>

我的客户;

<system.serviceModel>
  <client>
    <endpoint name="MyEndPoint" address="net.tcp://localhost:8000/MySVC" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="IMy" />
  </client>
  <behaviors>
    <endpointBehaviors>
      <behavior name="CommonBehavior">
        <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <bindings>
    <netTcpBinding>
      <binding name="netTcpBinding" maxReceivedMessageSize="2147483647" transferMode="Streamed" listenBacklog="2000" maxBufferPoolSize="2147483647"  maxBufferSize="2147483647"  maxConnections="2000"
               closeTimeout="08:00:00" openTimeout="08:00:00" receiveTimeout="08:00:00" sendTimeout="08:00:00">
        <readerQuotas maxDepth="2147483647"  maxStringContentLength="2147483647"  maxArrayLength="2147483647"  maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        <reliableSession ordered="true" inactivityTimeout="08:00:00"
             enabled="false" />
        <security mode="None">
          <transport clientCredentialType ="None"/>
        </security>
      </binding>
    </netTcpBinding>
  </bindings>
  <services>
    <service behaviorConfiguration="CommonBehavior" name="MyEndPoint">
      <endpoint address="" behaviorConfiguration="CommonBehavior" binding="netTcpBinding" bindingConfiguration="netTcpBinding" name="MyEndPoint" contract="Imy">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <host>
        <baseAddresses>
          <add baseAddress="net.tcp://localhost:8000/MySVC" />
        </baseAddresses>
      </host>
    </service>
  </services>
</system.serviceModel>

WCF错误-';对象图中可以序列化或反序列化的最大项数为';65536';

最后我发现了客户端配置中的错误,我解决了我的问题

我的错误是behaviorConfiguration="CommonBehavior"标记不在客户端的端点部分。添加此部分后,问题已成功解决,并且存在大量记录通用列表我可以从服务器转移到客户端。

这是我更正的客户端配置-

<system.serviceModel>
  <client>
    <endpoint name="MyEndPoint" behaviorConfiguration="CommonBehavior" address="net.tcp://localhost:8000/MySVC" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="IMy" />
  </client>
  <behaviors>
    <endpointBehaviors>
      <behavior name="CommonBehavior">
        <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <bindings>
    <netTcpBinding>
      <binding name="netTcpBinding" maxReceivedMessageSize="2147483647" transferMode="Streamed" listenBacklog="2000" maxBufferPoolSize="2147483647"  maxBufferSize="2147483647"  maxConnections="2000"
               closeTimeout="08:00:00" openTimeout="08:00:00" receiveTimeout="08:00:00" sendTimeout="08:00:00">
        <readerQuotas maxDepth="2147483647"  maxStringContentLength="2147483647"  maxArrayLength="2147483647"  maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        <reliableSession ordered="true" inactivityTimeout="08:00:00"
             enabled="false" />
        <security mode="None">
          <transport clientCredentialType ="None"/>
        </security>
      </binding>
    </netTcpBinding>
  </bindings>
</system.serviceModel>