Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarcosMTS

Erro de Cota máxima excedida... C# + webservice Nusoap

Recommended Posts

Ola a todos!

Estou fazendo uns testes com Webservice no caso estou consumindo o NUSOAP PHP com o C# desktop! (Sou iniciante nisso :assobiando: )

Ao retornar um array com mais ou menos acima de 400 linhas esta ocorrendo o erro:

"A cota maxima de tamanho de mensagem de entrada (65536) foi excedida. Para aumentar a cota, use a propriedade MaxReceivedMessageSize no elemento de associação apropriado."

Ja pesquisei um monte e vi que deveria aumentar o valor de " maxBufferSize="65536" maxReceivedMessageSize="65536"" no arquivo app.config mas ja fiz um monte mudança e ocorre sempre o mesmo erro com o mesmo numero (65536).

 

Oque eu devo mudar ou configurar? Algo no nusoap?

Codigo do arquivo app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="WSClientBinding1" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxReceivedMessageSize="65536"
                    textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"
                    messageEncoding="Text">
                    <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>
                <binding name="WSClientBinding" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="meu service..."
                binding="basicHttpBinding" bindingConfiguration="WSClientBinding1"
                contract="TesteData.WSClientPortType" name="WSClientPort1" />
            <endpoint address="meu service..."
                binding="basicHttpBinding" bindingConfiguration="WSClientBinding"
                contract="ServicePHP.WSClientPortType" name="WSClientPort" />
        </client>
    </system.serviceModel>
</configuration>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha se eu não me engano, a cota máxima tem um valor limite que ele não pode ultrapassar, mesmo você setando um valor exorbitante (tipo 999999999). Você já tentou verificar se o problema é realmente com o tamanho do retorno? Retorne algo pequeno e veja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim fiz testes com menos informações e funcionou perfeitamente, se não tiver como aumentar entao vou ter que receber os dados por meio de varias requisições ou algo assim...

 

esse webservice seria uma porta de comunicação para um sistema desktop (chamo de sistema pai) que deve comunicar-se com os sistemas filhos que seriam uns 40 kkkkkkkkk Se comunicar por meio dessa ponte online no caso o webservice teria um banco de dados... o sistema pai enviaria dados para o webservice e os outros filhos fariam a leitura dos dados .

É uma gambiarra grande mas acho que to no caminho certo...

 

Eu estava pensando em criptografar todos os dados, o pai criptografaria e enviaria para o webservice e os filhos descriptografariam! acho que ajuda na segurança ou no caso para ninguém de fora conseguir entender os dados..

Se alguém tiver uma dica agradeço!

alguma dica de segurança?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, a sua ideia está realmente certa, o unico meio seria via WebService, mas você já cogitou utilizar a arquitetura ReST ao invés de SOAP? Ela é cerca de 10 vezes mais rápida dependendo da função.

 

Uma dica para você poder retornar dados maiores é utilizar o formato JSON de retorno e não o XML, porque o XML usa muitos caracteres como tags, já o JSON é mais limpo, mais dificil de ler a olho nu, mas um sistema pode ler ele facilmente. Tente usar a criptografia AES porque ele também retorna uma cadeia de caracteres menor. Se isso também não resolver, use compressão de strings (https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=string%20compression%20.net) que pode ajudar a reduzir o tamanho do texto e também conta como uma espécie de criptografia.

 

Se nada disso adiantar, só aplicando alguns destes métodos em várias requisições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pelas dicas, vou ter que dar uma estudada sobre isso tudo pois ainda to iniciando nessa área de WebService...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.