none
Configurar MaxReceivedMessageSize RRS feed

  • Pergunta

  • Como corrigir esse problema?

    Erro:

    The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.


    ServiceReferences.ClientConfig

    <configuration>
     <system.serviceModel>
      <bindings>
       <basicHttpBinding>
        <binding name="BasicHttpBinding_BancoDados"
           maxBufferSize="2147483647"
           maxReceivedMessageSize="2147483647">
         <security mode="None" />
        </binding>
       </basicHttpBinding>
      </bindings>
      <client>
      <endpoint address="http://servico.eklesiaonline.com.br/Service1.svc"
       binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_BancoDados"
    contract="servicoEklesia.BancoDados"
    name="BasicHttpBinding_BancoDados" />
    </client>
    </system.serviceModel>
    </configuration


    WEB.Config

    <?xml version="1.0"?>
    <!--
    For more information on how to configure your ASP.NET application, please visit
    http://go.microsoft.com/fwlink/?LinkId=169433
    -->
    <configuration>
    <configSections>
    </configSections>
    <system.diagnostics>
    <trace autoflush="true" />
    <sources>
    <source name="System.ServiceModel"
    switchValue="Information, ActivityTracing"
    propagateActivity="true">
    <listeners>
    <add name="sdt"
    type="System.Diagnostics.XmlWriterTraceListener"
    initializeData="log.txt" />
    </listeners>
    </source>
    </sources>
    </system.diagnostics>
    <system.web>
    <compilation debug="true"
    targetFramework="4.0">
    <assemblies>
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </assemblies>
    </compilation>
    </system.web>
    <system.serviceModel>
    <bindings>
    <basicHttpBinding>
    <binding name="BasicHttpBinding_BancoDados"
    maxBufferSize="2147483647"
    maxReceivedMessageSize="2147483647">
    <security mode="None" />
    </binding>
    </basicHttpBinding>
    </bindings>
    <client>
    <endpoint address=""
    binding="basicHttpBinding"
    bindingConfiguration="BasicHttpBinding_BancoDados"
    contract="servicoEklesia.BancoDados"
    name="BasicHttpBinding_BancoDados" />
    </client>
    </system.serviceModel>
    </configuration

    quarta-feira, 1 de dezembro de 2010 20:11

Respostas

  • Esse erro acontece no serviço ou no cliente?

    Se for no serviço - no web.config (que estou assumindo ser a configuração do serviço), você não tem nenhuma configuração para serviços (esta estaria em system.serviceModel/services; você só tem uma em system.serviceModel/client). Imagino que o que esteja acontecendo é que o serviço está usando as configurações padrão (binding basicHttpBinding, com as quotas "default"). Tenta adicionar a seção abaixo no web.config pra ver se o problema é resolvido:

    <services>
      <service name="O_mesmo_nome_do_servico_que_esta_definido_no_Service1.svc">
        <endpoint
            address=""
            binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_BancoDados"
            contract="O_nome_da_interface_decorada_com_[ServiceContract]" />
      </service>
    </services>

    quarta-feira, 1 de dezembro de 2010 23:08
  • Boas Wellington,

    Deveria ser assim:

        <services>
          <service name="EklesiaServico.Service1">
            <endpoint
                address=""
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_BancoDados"
                contract="EklesiaServico.BancoDados" />
          </service>
        </services>


    http://www.israelaece.com
    quinta-feira, 2 de dezembro de 2010 10:54
    Moderador

Todas as Respostas

  • Esse erro acontece no serviço ou no cliente?

    Se for no serviço - no web.config (que estou assumindo ser a configuração do serviço), você não tem nenhuma configuração para serviços (esta estaria em system.serviceModel/services; você só tem uma em system.serviceModel/client). Imagino que o que esteja acontecendo é que o serviço está usando as configurações padrão (binding basicHttpBinding, com as quotas "default"). Tenta adicionar a seção abaixo no web.config pra ver se o problema é resolvido:

    <services>
      <service name="O_mesmo_nome_do_servico_que_esta_definido_no_Service1.svc">
        <endpoint
            address=""
            binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_BancoDados"
            contract="O_nome_da_interface_decorada_com_[ServiceContract]" />
      </service>
    </services>

    quarta-feira, 1 de dezembro de 2010 23:08
  • Ola Carlos ... obrigado pela sua resposta... 

    Acredito que tenha feito a configuração correta... mas continua o mesmo erro... segue mais informações abaixo...


    Erro:
    The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.



    web.config do Servico

    <?xml version="1.0"?>
    <configuration>

      <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section name="EklesiaServico.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      
      <system.serviceModel>
        <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" />

        </system.serviceModel>
      
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
        
      <connectionStrings>
       
      </connectionStrings>

      <applicationSettings>
        <EklesiaServico.Properties.Settings>
          <setting name="EklesiaServico_servicoCEP_CEPService" serializeAs="String">
            <value>http://www.byjg.com.br/site/webservice.php/ws/cep</value>
          </setting>
        </EklesiaServico.Properties.Settings>
      </applicationSettings>

      <system.diagnostics>

        <trace autoflush="true" />

        <sources>
          <source name="System.ServiceModel"
                  switchValue="Information, ActivityTracing"
                  propagateActivity="true">

            <listeners>
              <add name="traceListener"
                  type="System.Diagnostics.XmlWriterTraceListener"
                  initializeData= "TracesCrm.svclog" />
            </listeners>
          </source>
        </sources>
      </system.diagnostics>



      <system.serviceModel>
        <bindings>

          <basicHttpBinding>
            <binding name="BasicHttpBinding_BancoDados"
                     maxBufferSize="2147483647"
                     maxBufferPoolSize="2147483647"
                     maxReceivedMessageSize="2147483647">
              <readerQuotas maxStringContentLength="2000000"
                            maxArrayLength="2000000" />
              <security>
                <transport>
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>

        <services>
          <service name="BancoDados">
            <endpoint
                address=""
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_BancoDados"
                contract="EklesiaServico.BancoDados" />
          </service>
        </services>
      </system.serviceModel>
    </configuration>






    ServiceReferences.ClientConfig

    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_BancoDados" 
                             maxBufferSize="2147483647"
                             maxReceivedMessageSize="2147483647">
                        <security mode="None" />
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://servico.eklesiaonline.com.br/Service1.svc" 
                          binding="basicHttpBinding" 
                          bindingConfiguration="BasicHttpBinding_BancoDados"
                          contract="servicoEklesia.BancoDados" 
                          name="BasicHttpBinding_BancoDados" />
                                
            </client>
        </system.serviceModel>

    </configuration>



    Servico de Salvar uma Foto: Essa Rotina que esta gerando o erro.....

       public void SalvarFoto(Entidades.Pessoa entidade, string stringConexao)
            {
                 if (entidade.Foto != null)
                {
                    using (SqlConnection Conn = new SqlConnection(new cBancoDados().ObterStringDeConexao(stringConexao)))
                    {
                        string SQL = "UpDate Pessoa set  [Foto] = @Foto Where Codigo = " + entidade.Codigo;

                        SqlCommand cmd = new SqlCommand(SQL, Conn);
                        cmd.Parameters.AddWithValue("@Foto", SqlDbType.Image).Value = entidade.Foto;

                        try
                        {
                            Conn.Open();
                            cmd.ExecuteNonQuery();
                            Conn.Close();
                        }
                        catch (SqlException ex)
                        {
                            var pasta = HttpContext.Current.Server.MapPath("/");
                            var textWriter = new StreamWriter(string.Format(@"{0}/{1}.txt", pasta, DateTime.Now.ToString().Replace("/", "-").Replace(":", "-").Replace(" ", "-")));

                            textWriter.WriteLine(ex.Message);
                            textWriter.Close();
                        }
                    }
                };
            }




    Botão de Salvar Foto Cliente.

    Foto Tirada pela WebCam...... 


     private void salvarFoto() 
            {
                Pessoa entidade = new Pessoa();
                if (imMinhaFoto.Source != null)
                {
                    entidade.Codigo = id;
                    entidade.Foto = GetPictureAsBytes();

                    servico.SalvarFotoCompleted += (obj, arg) =>
                    {
                        MessageBox.Show("ok");
                    };
                    servico.SalvarFotoAsync(entidade, global.stringConexao);
                }
            }


    Rotina de conversão de imagem para byte

      private byte[] GetPictureAsBytes()
            {
                if (imagemArquivo != null)
                {
                    byte[] binaryData = new Byte[imagemArquivo.Length];
                    imagemArquivo.Seek(0, SeekOrigin.Begin);
                    long bytesRead = imagemArquivo.Read(binaryData, 0, (int)imagemArquivo.Length);
                    return binaryData;
                }

                if (imagemWebCam != null)
                {
                    int width =  imagemWebCam.PixelWidth;
                    int height = imagemWebCam.PixelHeight;
                    int bands = 3;
                    byte[][,] raster = new byte[bands][,];

                    //Convert the Image to pass into FJCore
                    //Code From http://stackoverflow.com/questions/1139200/using-fjcore-to-encode-silverlight-writeablebitmap
                    for (int i = 0; i < bands; i++)
                    {
                        raster[i] = new byte[width, height];
                    }

                    for (int row = 0; row < height; row++)
                    {
                        for (int column = 0; column < width; column++)
                        {
                            int pixel = imagemWebCam.Pixels[width * row + column];
                            raster[0][column, row] = (byte)(pixel >> 16);
                            raster[1][column, row] = (byte)(pixel >> 8);
                            raster[2][column, row] = (byte)pixel;
                        }
                    }

                    ColorModel model = new ColorModel { colorspace = ColorSpace.RGB };
                    FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster);

                    //Encode the Image as a JPEG
                    MemoryStream stream = new MemoryStream();
                    FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream);
                    encoder.Encode();

                    //Back to the start
                    stream.Seek(0, SeekOrigin.Begin);

                    //Get the Bytes and write them to the stream
                    byte[] binaryData = new Byte[stream.Length];
                    long bytesRead = stream.Read(binaryData, 0, (int)stream.Length);
                    return binaryData;
                }
                return null;
            }




    quinta-feira, 2 de dezembro de 2010 01:28
  • Boas Wellington,

    Como o Carlos disse, talvez o nome do serviço esteja errado. Ele precisa ter o full-name, incluindo o namespace. Será que a sua classe também não está debaixo do namespace EklesiaServico, assim como o contrato?

    Mas tanto o serviço e o contrato possuem o mesmo nome? O contrato deveria ser a interface.


    http://www.israelaece.com

    quinta-feira, 2 de dezembro de 2010 09:53
    Moderador
  • Boas Israel, obrigado pela resposta 

    Estou iniciando no Silverlight e desenvolvimento web agora... sempre desenvolvi offline... 

    Eu acho que entendi o que vc me disse no post anterior... mas só para confirmar eu coloquei novamente os codigos abaixo.

     

    Desde ja Obrigado pela ajuda.... 

     

     

    IService1.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    using System.Collections.ObjectModel;

    namespace EklesiaServico
    {

        // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.

        [ServiceContract]
        public interface BancoDados

        {
            [OperationContract]
            Boolean registroDoBancoDados(string stringConexao);

     

     

    Service1.svc.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    using System.Net;
    using System.Net.Mail;
    using System.Text.RegularExpressions;
    using System.Data.SqlClient;
    using System.Collections.ObjectModel;
    using System.Configuration;
    using System.Data;
    using System.IO;
    using System.Web;

    namespace EklesiaServico
    {

        // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.

        public class Service1 : BancoDados
        {

            string sql = "";
            public Boolean registroDoBancoDados(string stringConexao)

     

    Web.Config do meu servico

     

     <system.serviceModel>

        <bindings>

          <basicHttpBinding>

            <binding name="BasicHttpBinding_BancoDados"

                     maxBufferSize="2147483647"

                     maxBufferPoolSize="2147483647"

                     maxReceivedMessageSize="2147483647">

              <readerQuotas maxStringContentLength="2000000"

                            maxArrayLength="2000000" />

              <security>

                <transport>

                  <extendedProtectionPolicy policyEnforcement="Never" />

                </transport>

              </security>

            </binding>

          </basicHttpBinding>

        </bindings>

        <services>

          <service name="EklesiaServico.Service1.svc">

            <endpoint

                address=""

                binding="basicHttpBinding"

                bindingConfiguration="BasicHttpBinding_BancoDados"

                contract="EklesiaServico.BancoDados" />

          </service>

        </services>

      </system.serviceModel>

     

     

    quinta-feira, 2 de dezembro de 2010 10:28
  • Boas Wellington,

    Deveria ser assim:

        <services>
          <service name="EklesiaServico.Service1">
            <endpoint
                address=""
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_BancoDados"
                contract="EklesiaServico.BancoDados" />
          </service>
        </services>


    http://www.israelaece.com
    quinta-feira, 2 de dezembro de 2010 10:54
    Moderador
  • Deu certo meu amigo... 

    Obrigado por passar seu conhecimento para quem esta iniciando.....

     

    "A Plavra certa na hora certa é como um desenho de ouro feito em cima de prata, Quando alguém está querendo aprender, o conselho de uma pessoa experiente vale mais do que anéis de outro ou jóias de ouro puro." Proverbios 25:11-12

     

     

    quinta-feira, 2 de dezembro de 2010 11:46