Principales respuestas
MaxReceivedMessageSize en WCF

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();
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.
- Propuesto como respuesta Sergio ParraModerator viernes, 6 de noviembre de 2015 9:52
- Marcado como respuesta Sergio ParraModerator sábado, 7 de noviembre de 2015 7:13
-
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>
- Marcado como respuesta Sergio ParraModerator sábado, 7 de noviembre de 2015 7:13
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.
- Propuesto como respuesta Sergio ParraModerator viernes, 6 de noviembre de 2015 9:52
- Marcado como respuesta Sergio ParraModerator sábado, 7 de noviembre de 2015 7:13
-
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>
- Marcado como respuesta Sergio ParraModerator sábado, 7 de noviembre de 2015 7:13