“进行序列化时出错: ReadVAJ1sResult。InnerException 消息是“对象图中可以序列化或反序列化的项目数目上限为“65535”。请更改对象图或增加 MaxItemsInObjectGraph 的配额”,但是,该配置我已经改过了,还提示这个异常。
另外,我在把服务端的MaxItemsInObjectGraph改成1的时候,程序依然是在1000条以内正常,1000以上报错。我感觉是不是我的服务端的配置没起作用?或者还有其它什么原因引起的这个错误。
附:客户端和服务端配置
服务端:
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service.Service">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="testBinding"
contract="IContract.IService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<timeouts closeTimeout="10:10:10" />
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="testBinding" closeTimeout="10:50:00" openTimeout="10:10:00"
receiveTimeout="10:10:00" sendTimeout="10:10:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2146483647"
maxReceivedMessageSize="2147483647" messageEncoding="Text"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
客户端:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="metadataBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService" closeTimeout="10:55:00"
openTimeout="10:55:00" receiveTimeout="10:50:00" sendTimeout="10:55:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2146483647"
maxReceivedMessageSize="2147483647" messageEncoding="Text"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://dd0402ijd/WCFSVN/Service.svc" behaviorConfiguration="metadataBehavior"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
contract="wcfSVC.IService" name="BasicHttpBinding_IService" />
</client>
</system.serviceModel>
10 个解决方案
#2
楼上是不是不看问题的具体内容就直接发了个地址? 你发的这个地址里的东西,我都配置过了。
#3
确认一下,客户端连的服务端配置已经修改了?还是只是修改了本机,而发布的服务并未修改。
#4
都修改了。客户端的MaxItemsInObjectGraph是有效的,因为我将其值改成1,是对数据结果产生影响了。但是服务端,我将这个属性的值改成1,却对结果没有任何影响
#5
那真是奇怪了。一般修改上面的配置就能解决了。
会不会是IIS的HttRequest大小限制。
<httpRuntime maxRequestLength="20000" executionTimeout="600" />
另外,你先本地创建一个WCF 工程测试一下,是否发生同样的问题。
会不会是IIS的HttRequest大小限制。
<httpRuntime maxRequestLength="20000" executionTimeout="600" />
另外,你先本地创建一个WCF 工程测试一下,是否发生同样的问题。
#6
HttRequest也配置过,没用。我现在用的就是在本地。调试了很久都没找到问题所在。
#7
#8
你把测试工程上传下,我下来跑跑看。
#9
感谢fangxinggood的帮忙。
我已经找到问题的所在了,是实体序列化造成的。数据层使用了一个ORM框架,实体的序列化实际上没有完成(即使使用了DataContract和DataMemeber),所以在服务端配置的MaxItemsInObjectGraph总是没起到作用。
我已经找到问题的所在了,是实体序列化造成的。数据层使用了一个ORM框架,实体的序列化实际上没有完成(即使使用了DataContract和DataMemeber),所以在服务端配置的MaxItemsInObjectGraph总是没起到作用。
#10
hi,楼主,我也碰到同样的问题,那么样保证序列化实际完成了呢?(除了使用DataContract和DataMemeber)
#1
#2
楼上是不是不看问题的具体内容就直接发了个地址? 你发的这个地址里的东西,我都配置过了。
#3
确认一下,客户端连的服务端配置已经修改了?还是只是修改了本机,而发布的服务并未修改。
#4
都修改了。客户端的MaxItemsInObjectGraph是有效的,因为我将其值改成1,是对数据结果产生影响了。但是服务端,我将这个属性的值改成1,却对结果没有任何影响
#5
那真是奇怪了。一般修改上面的配置就能解决了。
会不会是IIS的HttRequest大小限制。
<httpRuntime maxRequestLength="20000" executionTimeout="600" />
另外,你先本地创建一个WCF 工程测试一下,是否发生同样的问题。
会不会是IIS的HttRequest大小限制。
<httpRuntime maxRequestLength="20000" executionTimeout="600" />
另外,你先本地创建一个WCF 工程测试一下,是否发生同样的问题。
#6
HttRequest也配置过,没用。我现在用的就是在本地。调试了很久都没找到问题所在。
#7
#8
你把测试工程上传下,我下来跑跑看。
#9
感谢fangxinggood的帮忙。
我已经找到问题的所在了,是实体序列化造成的。数据层使用了一个ORM框架,实体的序列化实际上没有完成(即使使用了DataContract和DataMemeber),所以在服务端配置的MaxItemsInObjectGraph总是没起到作用。
我已经找到问题的所在了,是实体序列化造成的。数据层使用了一个ORM框架,实体的序列化实际上没有完成(即使使用了DataContract和DataMemeber),所以在服务端配置的MaxItemsInObjectGraph总是没起到作用。
#10
hi,楼主,我也碰到同样的问题,那么样保证序列化实际完成了呢?(除了使用DataContract和DataMemeber)