none
Limitação do Tamanho para Salvar no Banco de Dados via WCF RRS feed

  • Pergunta

  • Boa tarde a todos, não estou conseguindo salvar imagens no Banco através do WCF maiores que 20k.

    Existe alguma configuração onde eu possa alterar.

    Obrigado a todos!!

    quinta-feira, 4 de agosto de 2011 20:11

Respostas

  • Daniel, obrigado mais uma vez.

    Mas foi resolvido o problema, veja se procede:

    <service name="EstacionaWCF.Service">
            <endpoint address=""
                      binding="basicHttpBinding"
                      contract="EstacionaWCF.IService"
                      bindingConfiguration="config" />

    Onde está o negrito não existia, não coloquei o Namespace, será que tem alguma coisa a ver?

    Depois disso tudo funcionando perfeitamente!!

    Daniel, me ajudou muito, fico muito grato por isso.

    Um grande abraço,

    Carlos Gomes


    terça-feira, 9 de agosto de 2011 16:12
  • Boas Carlos,

    Procede sim. É um daqueles detalhes que parecem pequenos, mas acabam nos dando uma dorzinha de cabeça :). Tanto o contract quanto o service name tem que ser o full name (namespace.classe/interface).

    Fico feliz por ter contribuido com alguma coisa. Estamos aqui pra isso :).

     

    Abraços.


    Daniel Torres Coding is fun :)
    terça-feira, 9 de agosto de 2011 17:03

Todas as Respostas

  • Boas Carlos,

    Qual erro esta sendo exibido? É no serviço? Se sim, voce pode aumentar o tamanho das mensagens. Voce pode dar uma lida neste artigo link. Essas configurações podem ser feitas no arquivo de configuração da sua aplicação (caso voce tenha feito da forma declarativa). Mas lembre-se de ajustar somente o tamanho necessario, para não causar outros problemas ao seu serviço.

     

    Espero ter ajudado.

    Abraços,


    Daniel Torres Coding is fun :)
    sexta-feira, 5 de agosto de 2011 16:17
  • Olá Daniel,

    O erro exibido:

    The remote server returned an error: NotFound.

    Somente quando as imagens passam de 20k, veja o arquivo de configuração baseado nos textos exibidos, dei uma corrigida no meu arquivo de configuração conforme abaixo:

     

     

    <?xml version="1.0"?>
    <configuration>
    
     <system.web>
      <compilation debug="true" targetFramework="4.0" />
     </system.web>
     <system.serviceModel>
    
    
    
    
    
      <services>
       <service name="EstacionaWcf.Service">
        <endpoint address=""
             binding="basicHttpBinding"
             contract="IService"
             bindingConfiguration="config" />
       </service>
      </services>
      <bindings>
       <basicHttpBinding>
        <binding name="config"
             messageEncoding="Mtom"
             transferMode="Streamed"
             maxBufferSize="104857600"
             maxBufferPoolSize="104857600"
             maxReceivedMessageSize="104857600">
        </binding>
       </basicHttpBinding>
      </bindings>
    
    
    
    
    
    
    
    
    
    
      <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="false"/>
        </behavior>
       </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
     </system.serviceModel>
     <system.webServer>
      <modules runAllManagedModulesForAllRequests="true"/>
     </system.webServer>
    
    </configuration>

    Mesmo assim continua com o mesmo erro.

     

    Obrigado pela ajuda,

    Carlos Gomes

     

     

     

    domingo, 7 de agosto de 2011 20:48
  • Boas Carlos,

    Estive vendo a configuração do seu arquivo. Para visualizar o verdadeiro erro, não um erro amigavel (No seu caso o erro "The remote server returned an error"), voce pode alterar para true o valor de includeExceptionDetailsInFaults. Dessa forma voce devera ver a verdadeira mensagem de erro. Outra dica legal é utilizar o tracing do WCF. Neste link voce pode ver como configurar. Outro post interessante que voce pode dar uma olhada é esse outro post onde o Manoel teve um problema similar ao seu recebendo a mesma mensagem de erro.

     

    Espero ter ajudado.

     

    Abraços


    Daniel Torres Coding is fun :)
    domingo, 7 de agosto de 2011 21:58
  • Olá Daniel, muito obrigado pelas dicas.

     

    Usei o tracing do WCF e vi o erro é o abaixo:

     

    "A cota máxima de tamanho de mensagens de entrada (65536) foi excedida. Para aumentar a cota, use a propriedade MaxReceivedMessageSize no elemento de ligação apropriado."

    O que tudo indica é tamanho mesmo, usei a configuração do Manoel também " <dataContractSerializer maxItemsInObjectGraph="2147483647"/> "

    Não sei mais o que fazer, já andei pelo Google, mas não consigo a resposta.

     

    Muito obrigado, se tiver mais alguma idéia será bem vinda.

     

    Abraços,

    Carlos Gomes

    segunda-feira, 8 de agosto de 2011 16:15
  • Boas Carlos,

    Estive lembrando agora. Os valores configurados no serviço, se não me engano, não são repassados para o cliente. Voce pode tentar verificar os valores que estão no arquivo de configuração da aplicação cliente. Talvez no *.config client ainda esteja com os valores default.

     

    Espero ter ajudado.

    Abraços.


    Daniel Torres Coding is fun :)
    terça-feira, 9 de agosto de 2011 15:22
  • Daniel, obrigado mais uma vez.

    Mas foi resolvido o problema, veja se procede:

    <service name="EstacionaWCF.Service">
            <endpoint address=""
                      binding="basicHttpBinding"
                      contract="EstacionaWCF.IService"
                      bindingConfiguration="config" />

    Onde está o negrito não existia, não coloquei o Namespace, será que tem alguma coisa a ver?

    Depois disso tudo funcionando perfeitamente!!

    Daniel, me ajudou muito, fico muito grato por isso.

    Um grande abraço,

    Carlos Gomes


    terça-feira, 9 de agosto de 2011 16:12
  • Boas Carlos,

    Procede sim. É um daqueles detalhes que parecem pequenos, mas acabam nos dando uma dorzinha de cabeça :). Tanto o contract quanto o service name tem que ser o full name (namespace.classe/interface).

    Fico feliz por ter contribuido com alguma coisa. Estamos aqui pra isso :).

     

    Abraços.


    Daniel Torres Coding is fun :)
    terça-feira, 9 de agosto de 2011 17:03