2011-07-18 13 views
8

Tengo un servicio WCF REST alojado en IIS 7.5 Windows 2008 R2. El servicio funciona como se espera, excepto cuando un cliente intenta enviar un mensaje de más de ~ 25 MB. Específicamente, al enviar un tamaño de mensaje de ~ 25 MB, el servicio recibe y procesa el mensaje correctamente, al enviar un mensaje de tamaño ~ 31 MB falla.Servicio alojado de WCF de IIS 7.5 arroja EndpointNotFoundException con 404 solo para solicitudes grandes

Cuando se aloja localmente en VS 2010, el mensaje se recibe sin error. Cuando se aloja de forma remota en IIS 7.5, el servicio responde de inmediato con: "System.ServiceModel.EndpointNotFoundException: No había punto extremo escuchando a ...", la excepción interna es: "El servidor remoto devolvió un error: (404) No encontrado" .

Esto es diferente de la excepción planteada cuando la configuración del tamaño máximo de mensaje es insuficiente. Dado que cuando se aloja localmente no obtengo un error, supongo que tiene algo que ver con IIS o quizás con algunas configuraciones de firewall.

Esta es la configuración:

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpRuntime requestPathInvalidCharacters="" maxRequestLength="512000"/> 
    </system.web> 
    <system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/> 
    <bindings> 
     <webHttpBinding> 
     <binding maxReceivedMessageSize="524288000" maxBufferSize="524288000"> 
      <readerQuotas maxStringContentLength="524288000" maxArrayLength="524288000"/> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 

Respuesta

13

Es el tamaño máximo de carga de IIS que te muerde. Su valor predeterminado es 30 MB. Puede fijarlo en web.config:

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

También puede cambiarlo en el administrador de IIS, en algún lugar de Filtro de solicitudes/ ajustes de función. El valor que se debe corregir es "Longitud máxima permitida del contenido (bytes)".

0

puede intentar establecer sus valores máximos a int bruja Max es 2147483648, fuera de eso es posible que desee considerar spliting la carga o streaming.

Cuestiones relacionadas