2011-04-09 17 views
6

Tengo una aplicación que está cargando archivos grandes usando WCF con netTcpBinding. Para un archivo particular, obtengo el mensaje de error:Se ha excedido la cuota máxima de tamaño de mensaje para los mensajes entrantes (la solución obvia no ayuda)

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

Aquí está mi vinculantes para el archivo web.config cliente (cliente es un sitio web ASP.NET):

<binding name="DataImportEndpoint" closeTimeout="00:20:00" openTimeout="00:01:00" 
     receiveTimeout="00:20:00" sendTimeout="00:20:00" transferMode="Buffered" 
     hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" 
     maxBufferSize="5242880" maxReceivedMessageSize="5242880"> 
     <readerQuotas maxDepth="32" maxStringContentLength="524288" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
     </security> 
    </binding> 

me di cuenta también que necesitaba para cambiar la propiedad maxReceivedMessageSize para la configuración de servicio. Por lo que añade esta unión:

<bindings> 
    <netTcpBinding> 
    <binding name="NetTcpLarge" 
      maxReceivedMessageSize="5242880" maxBufferSize="5242880"> 
     <readerQuotas maxStringContentLength="524288"/> 
    </binding> 
    </netTcpBinding> 
</bindings> 

y modificado mi punto final:

<endpoint address="DataImportService" binding="netTcpBinding" 
     name="DataImportEndpoint" bindingConfiguration="NetTcpLarge" 
     contract="IDataImportService" /> 

que esto esté arreglado el problema cuando corro auto alojada en Visual Studio. Pero en una instancia que se ejecuta en IIS 7, estoy todavía obteniendo el mismo error que se ha excedido 65536. ¿Me estoy perdiendo de algo? i siquiera añadido esto a mi config servicio en IIS 7 ejemplo, pero en vano:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="5242880" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 

Respuesta

6

Si la excepción es todavía mismo con IIS, no tiene nada que ver con <requestLimits>, la excepción indica claramente que se supera maxReceivedMessageSize . Capturaba las trazas de WCF en un nivel detallado y comprobaba qué configuración de enlace se aplicaba al punto final.

Le sugiero que vuelva a verificar la configuración del cliente y del servicio y, si todavía no hay ninguna pista, capture los rastros de servicio y del cliente en el nivel detallado.

+2

De hecho, la configuración de enlace NO se estaba aplicando. El nombre del servicio de web.config no coincidía con el nombre del servicio del archivo .svc (¡uno tenía espacio de nombre completo) y debido a eso, se aplicaban los puntos finales predeterminados! gracias por la sugerencia – pjacko

0

Parece que excede el tamaño del búfer "maxRequestLength" de IIS. El tamaño predeterminado es ... adivinó, 65536. Intente agregar las siguientes líneas a su archivo web.config:

<system.web> 
    <compilation debug="true"/> 
    <httpRuntime maxRequestLength="5242880"/> 
</system.web> 
+3

El tamaño predeterminado es 4096 KB (4 MB). http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx – StarCub

Cuestiones relacionadas