Transfira grande quantidade de dados no serviço WCF

Criei um serviço Web no WCF que retorna mais de 54000 linhas de dados com 10 dados em cada linha. Eu usei o wsHttpBinding para comunicação. O serviço funciona bem com menos dados (ou seja, 2.000 linhas), mas é bom ao tentar enviar um grande conjunto de registros com mais de 50000 linhas (~ 2 MB). A mensagem de exceção é assim

Ocorreu um erro ao receber a resposta HTTP parahttp://localhost:9002/MyService.svc. Isso pode dever-se à ligação do terminal em serviço que não utiliza o protocolo HTTP. Isso também pode dever-se à interrupção de um contexto de solicitação HTTP pelo servidor (possivelmente devido ao encerramento do serviço). Consulte os logs do servidor para obter mais detalhes.

Por favor, não me diga para usar a paginação no lado do cliente - eu sei que isso resolverá o problema. Mas preciso de toda a parte de dados no final do client

A minha configuração de serviço no servidor é como

<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name="MyWsHttpBinding" />
    </wsHttpBinding>
  </bindings>
  <services>
    <service name="AdminService">
      <endpoint address="AdminSrv"
                binding="wsHttpBinding"
                contract="IAdminService"/>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      <host>
        <baseAddresses>
          <add baseAddress="/Bus/IRfotoWCF" />
        </baseAddresses>
      </host>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <!-- To avoid disclosing metadata information, 
                  set the value below to false and remove the metadata endpoint above before deployment -->
        <serviceMetadata httpGetEnabled="True"/>
        <!-- To receive exception details in faults for debugging purposes, 
                  set the value below to true.  Set to false before deployment 
                  to avoid disclosing exception information -->
        <serviceDebug includeExceptionDetailInFaults="True" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true"></serviceHostingEnvironment>
</system.serviceModel>

A configuração do meu cliente é como

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="BasicHttpBinding_IAdminService" closeTimeout="00:01:00"
               openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
               allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
               maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
               messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
               useDefaultWebProxy="true">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
                      maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="None">
          <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
          <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint address="http://localhost/TestService/AdminService.svc" 
              binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAdminService"
              contract="IAdminService" name="BasicHttpBinding_IAdminService" />
  </client>
</system.serviceModel>

Alguém me ajudaria com uma configuração exata, tanto no cliente quanto no servidor. Mesmo que eu precise alterar a ligação de wsHttpBinding para netTcpBinding - não tenho problemas em fazer isso. Desde já, obrigado

questionAnswers(3)

yourAnswerToTheQuestion