none
MaxReceivedMessageSize en WCF RRS feed

  • Pregunta

  • saludos, estoy programando un wcf y a la vez lo publico en un servicio de consola programaticamnete, pero obtengo este error en algunos casos 

    Se ha excedido la cuota de tamaño máximo de los mensajes entrantes (65536). Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el elemento de enlace correspondiente.

    ESTE ES MI CODIGO

     //Create a URI to serve as the base address
                Uri httpUrl = new Uri("http://localhost:8090/Servicio/Expediente");
                //Create ServiceHost
                ServiceHost host
                = new ServiceHost(typeof(wcfGestionNoContaminacion.servicioExpediente), httpUrl);
     
                var binding = new WSHttpBinding();
                
                binding.MaxReceivedMessageSize = int.MaxValue;
                host.AddServiceEndpoint(typeof(wcfGestionNoContaminacion.IservicioExpediente)
                , binding, "");
              
                //Enable metadata exchange
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                host.Description.Behaviors.Add(smb);           
              
                //Start the Service
    
                ServiceDebugBehavior debug = host.Description.Behaviors.Find<ServiceDebugBehavior>();
                          
                // if not found - add behavior with setting turned on 
                if (debug == null)
                {
                    host.Description.Behaviors.Add(
                         new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });                
                }
                else
                {
                    // make sure setting is turned ON
                    if (!debug.IncludeExceptionDetailInFaults)
                    {
                        debug.IncludeExceptionDetailInFaults = true;
                    }
                }
                host.Open();
              
                Console.WriteLine("El servicio fue hosteado" + " " + DateTime.Now.ToString());
                Console.WriteLine("El host esta en funcionamiento");
                Console.ReadLine();

    viernes, 6 de noviembre de 2015 0:46

Respuestas

  • En principio debería funcionar tal como lo estás haciendo. El único problema que le veo es que estás metiendo como tamaño máximo int.MaxValue. Dado que este valor sirve para asignar un búfer en memoria para los mensajes recibidos, puede que el tamaño que le has puesto sea excesivo. Además, ten presente que puede haber dependencias con los valores de otros límites como por ejemplo ReaderQuotas o MaxBufferPoolSize. Yo sugeriría crear provisionalmente una versión del programa que use el app.config para guardar la configuración de WCF y "jugar" con los parámetros usando el editor de configuración de WCF, hasta que encuentres la combinación óptima. Después si quieres puedes trasladar esos valores a la versión que tienes que los configura por código, y deshacerte del .config.
    viernes, 6 de noviembre de 2015 6:37
  • hola la solucion fue agregarle en el web config

    del aplicativo web que consume el servicio esta linea,ademas de lo que ya habia puesto en el wcf

      <bindings>
          <wsHttpBinding>
            <binding name="WSHttpBinding_IservicioExpediente" maxReceivedMessageSize="999999999" />
          </wsHttpBinding>
        </bindings>

    sábado, 7 de noviembre de 2015 4:29

Todas las respuestas

  • En principio debería funcionar tal como lo estás haciendo. El único problema que le veo es que estás metiendo como tamaño máximo int.MaxValue. Dado que este valor sirve para asignar un búfer en memoria para los mensajes recibidos, puede que el tamaño que le has puesto sea excesivo. Además, ten presente que puede haber dependencias con los valores de otros límites como por ejemplo ReaderQuotas o MaxBufferPoolSize. Yo sugeriría crear provisionalmente una versión del programa que use el app.config para guardar la configuración de WCF y "jugar" con los parámetros usando el editor de configuración de WCF, hasta que encuentres la combinación óptima. Después si quieres puedes trasladar esos valores a la versión que tienes que los configura por código, y deshacerte del .config.
    viernes, 6 de noviembre de 2015 6:37
  • hola la solucion fue agregarle en el web config

    del aplicativo web que consume el servicio esta linea,ademas de lo que ya habia puesto en el wcf

      <bindings>
          <wsHttpBinding>
            <binding name="WSHttpBinding_IservicioExpediente" maxReceivedMessageSize="999999999" />
          </wsHttpBinding>
        </bindings>

    sábado, 7 de noviembre de 2015 4:29