WCF maxReceivedMessageSize不起作用

时间:2010-08-05 02:12:30

标签: c# wcf

我有一个具有这些配置设置的WCF服务。当我从客户端应用程序调用它时,我仍然遇到了可怕的问题,“对象图中可以序列化或反序列化的最大项目数为'65536'”我的配置在下面有什么问题?

<system.serviceModel>
  <bindings>
   <wsHttpBinding>
    <binding name="LargeBuffer" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
     <readerQuotas maxDepth="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" 
          maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
    </binding>
   </wsHttpBinding>
  </bindings>
  <services>
   <service behaviorConfiguration="ServiceBehavior" name="TestWcfService.Service1">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="LargeBuffer" name="ServiceEndPoint"
      contract="TestWcfService.IService1">
      <identity>
       <dns value="localhost" />
      </identity>
    </endpoint>
   </service>
  </services>
  <behaviors>
   <serviceBehaviors>
    <behavior name="ServiceBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <dataContractSerializer maxItemsInObjectGraph="2147483647" />
     <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
 </system.serviceModel>

2 个答案:

答案 0 :(得分:1)

是的,我在客户端增加了它以匹配。它仍然达到了这个极限。我担心的是,当它拉回服务引用时,它仍然将65536视为默认大小,因此它永远不会识别出更大的数量。有什么想法吗?

答案 1 :(得分:0)

这是我的客户端代码:

<system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="ServiceEndPoint" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
                    transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm=""/>
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" establishSecurityContext="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:61423/Service1.svc" binding="wsHttpBinding"
                bindingConfiguration="ServiceEndPoint" contract="LucasImport.IService1"
                name="ServiceEndPoint">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>