WCF não está funcionando em alguns servidores

1

Estou recebendo a exceção:

"Número máximo de itens que podem ser serializados ou desserializados em um gráfico de objeto é '65536'"

em dois (Staging e Production) em três servidores, e não consigo pensar em por que há um problema.

Como funciona no servidor de teste [IIS7.5 w2k8r2], sinto que posso excluir o web.config do site.

Reuni o machine.config e o web.configs dos servidores web, e os comparei, e não vejo qualquer problema.

Poderia haver configurações de algum outro lugar?

Editar:

Esta é a parte relevante do arquivo de configuração:

</system.webServer>
<system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="TheEndPointBehaviour">
      <dataContractSerializer maxItemsInObjectGraph="6553600" />
    </behavior>
  </endpointBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="TheEndPoint" maxReceivedMessageSize="6553600" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://ipaddress/folder/service.svc"
    binding="basicHttpBinding" bindingConfiguration="TheEndPoint"
    contract="Reference.IService" name="TheEndPoint" />
</client>

O desenvolvedor usou o 6553600, no entanto, subi para 2147483647 e isso não funciona.

    
por zeristor 24.04.2014 / 15:00

1 resposta

1

As operações que você está testando são exatamente iguais em todos os três servidores? Se você está trabalhando com diferentes conjuntos de dados, isso pode explicar por que você não está vendo isso em todos os servidores.

Isso geralmente é um resultado do cliente não conseguir serializar / desserializar o suficiente. Você pode aumentar o limite adicionando um comportamento de terminal (ou em um comportamento personalizado, se você usá-los em seu projeto):

  <endpointBehaviors>
    <behavior name="blah">
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
    </behavior>
  </endpointBehaviors>

Você pode precisar fazer isso tanto no seu web.config como no app.config do seu cliente.

    
por 24.04.2014 / 15:09