Eu tenho um serviço WCF que retorna 1000 registros do banco de dados para o cliente. Eu tenho um cliente ASP.NET WCF (eu adicionei referência de serviço no projeto de aplicativo da web asp.net para consumir o WCF).
Recebo a seguinte mensagem quando executo o aplicativo cliente:
A cota máxima do tamanho das mensagens recebidas (65536) foi excedida. Para aumentar a cota, use a propriedade MaxReceivedMessageSize no elemento de ligação apropriado.
Qualquer ajuda? Como aumentar a cota do tamanho da mensagem?
Respostas:
Você deseja algo assim para aumentar as cotas de tamanho da mensagem, no arquivo App.config ou Web.config :
E use o nome da ligação na sua configuração do terminal, por exemplo
A justificativa para os valores é simples, eles são suficientemente grandes para acomodar a maioria das mensagens. Você pode ajustar esse número para atender às suas necessidades. O baixo valor padrão está basicamente lá para impedir ataques do tipo DOS. Para 20000000, seria eficaz um ataque distribuído do DOS; o tamanho padrão de 64k exigiria que um número muito grande de clientes sobrecarregasse a maioria dos servidores atualmente.
fonte
Se você ainda receber essa mensagem de erro enquanto estiver usando o WCF Test Client, é porque o cliente possui uma configuração MaxBufferSize separada .
Para corrigir o problema:
Uma lista de configurações editáveis será exibida, incluindo MaxBufferSize.
Nota: Os clientes proxy gerados automaticamente também configuram MaxBufferSize como 65536 por padrão.
fonte
Se você estiver criando suas ligações WCF dinamicamente, aqui está o código a ser usado:
fonte
O cliente de teste do WCF possui sua própria configuração de cliente.
Execute o cliente de teste e role para baixo. Se você clicar duas vezes no nó Arquivo de configuração, verá a representação XML. Como você pode ver,
maxReceivedMessageSize
é65536
.Para editar isso, clique com o botão direito do mouse no nó da árvore Config File e selecione Edit With
SvcConfigEditor
. Quando o editor abrir, expanda Ligações e clique duas vezes na ligação que foi gerada automaticamente.Você pode editar todas as propriedades aqui, incluindo
maxReceivedMessageSize
. Quando terminar, clique em Arquivo - Salvar .Por fim, quando voltar à janela Cliente de Teste do WCF, clique em Ferramentas - Opções .
NOTA : Desmarque a opção Sempre gerar novamente a configuração ao iniciar serviços .
fonte
Always regenerate config
opção.Eu achei o caminho mais fácil
fonte
Eu resolvo o problema ... da seguinte forma
fonte
Resolvi meu problema no Bing Maps WPF no meu projeto usando CalculateRoute (). A solução no meu caso foi definir maxReceivedMessageSize e maxReceivedMessageSize no atributo "httpTransport" para a seção "customBinding".
Defino no arquivo applications.config (es. MyApp.config) esta configuração:
fonte
fonte
Para HTTP:
Para TCP:
IMPORTANTE:
Se você tentar passar um objeto complexo que possui muitos objetos conectados (por exemplo: uma estrutura de dados em árvore, uma lista que possui muitos objetos ...), a comunicação falhará, independentemente de como você aumentou as cotas. Nesses casos, você deve aumentar a contagem de objetos contidos:
fonte
maxItemsInObjectGraph
foi a solução (rápida) para mim. Mas, ao aumentar isso, você deve pensar se a melhor solução é para seu aplicativo solicitar dados em partes, em oposição a um enorme gráfico de objetos que pode sobrecarregar os recursos.Para mim, tudo que eu precisava fazer era adicionar
maxReceivedMessageSize="2147483647"
ao cliente app.config. O servidor permaneceu intocado.fonte
Outra coisa importante a considerar da minha experiência ..
Eu recomendaria fortemente NÃO maximizar o maxBufferPoolSize, porque os buffers do pool nunca são liberados até que o domínio do aplicativo (ou seja, o Application Pool) seja reciclado.
Um período de tráfego intenso pode fazer com que muita memória seja usada e nunca seja liberada.
Mais detalhes aqui:
fonte
Não esqueça que o app.config do ponto de entrada de execução será considerado, e não o projeto da biblioteca de classes que gerencia as chamadas de serviços da Web, se houver.
Por exemplo, se você receber o erro ao executar o teste de unidade, precisará definir a configuração apropriada no projeto de teste.
fonte
Eu recebi esse erro ao usar essas configurações no web.config
eu defino configurações como esta:
fonte
bindings
elemento de Nate e o republicou como parte de sua resposta. Esses2000000
valores são bem distintos.