Mi servicio WCF tiene un contrato de operación que acepta, como parámetro, una matriz de objetos. Esto puede ser bastante grande. Después de buscar soluciones para Bad Request: 400, encontré el verdadero motivo: el tamaño máximo de mensaje.Se ha superado la cuota máxima de tamaño de mensaje para los mensajes entrantes (65536)
Sé que esta pregunta se ha hecho antes en MUCHOS lugares. Probé con lo que todos dicen: "Aumenta los tamaños en los archivos de configuración del cliente y del servidor". Yo tengo. Todavía no funciona. web.config
Mi de Servicio: app.config
<system.serviceModel>
<services>
<service name="myService">
<endpoint name="myEndpoint" address=""
binding="basicHttpBinding"
bindingConfiguration="myBinding"
contract="Meisel.WCF.PDFDocs.IPDFDocsService" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="myBinding"
closeTimeout="00:11:00"
openTimeout="00:11:00"
receiveTimeout="00:15:00"
sendTimeout="00:15:00"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
transferMode="Buffered"
allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
messageEncoding="Text"
textEncoding="utf-8"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Mi de Cliente:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IPDFDocsService"
closeTimeout="00:11:00"
openTimeout="00:11:00"
receiveTimeout="00:10:00"
sendTimeout="00:11:00"
allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Text"
textEncoding="utf-8"
transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None"
proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName"
algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8451/PDFDocsService.svc"
behaviorConfiguration="MoreItemsInObjectGraph"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IPDFDocsService"
contract="PDFDocsService.IPDFDocsService"
name="BasicHttpBinding_IPDFDocsService" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="MoreItemsInObjectGraph">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Qué puedo posiblemente faltar o hacer mal? Es como si el servicio estuviera ignorando lo que escribí en el maxReceivedBufferSize.
Gracias de antemano, Kyle
ACTUALIZACIÓN
Aquí hay otros dos preguntas StackOverflow donde nunca recibieron una respuesta, ya sea:
WCF MaxReceivedMessageSize property not taking
Parece correcto de un vistazo. ¿Estás configurando el punto final en el código en cualquier lugar? Si es así, eso podría estar anulando la configuración de configuración. –
¿Cómo hospedas el servicio? IIS? –
@Jeff: solo estoy creando una nueva instancia de mi cliente de servicio, luego llamando a OperationContract, pasando en mi clase personalizada como parámetro. Nada sofisticado. @Simon: estoy usando el servidor de desarrollo ASP .NET. Actualmente, es todo local. – DaleyKD