2012-05-29 18 views
5

He estado trabajando para habilitar la compresión JSON desde uno de nuestros sitios MVC3. De varios artículos que he leído, parece que debería poder establecer el tipo MIME application/json; charset=utf-8 en el archivo web.config de las aplicaciones. Pero hacerlo no permite la compresión. Pero cuando se agrega al archivo applicationhost.config, funciona. ¿Me estoy perdiendo de algo?IIS 7.5 no comprime JSON cuando se configura en la aplicación web.config

Mi web.config aplicación tiene las siguientes añadieron a la misma:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
     <add mimeType="application/javascript; charset=utf-8" enabled="true" /> 
     <add mimeType="application/x-javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/json; charset=utf-8" enabled="true" /> 
    </dynamicTypes> 
    <staticTypes> 
     <add mimeType="application/javascript; charset=utf-8" enabled="true" /> 
     <add mimeType="application/x-javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/json; charset=utf-8" enabled="true" /> 
    </staticTypes> 
</httpCompression> 
<urlCompression doStaticCompression="true" doDynamicCompression="true" /> 

El servidor ejecuta Windows Server 2008 R2 con IIS7.5. También instalé & Dynamic Compression habilitado para el sitio en cuestión.

Cualquier ayuda sería muy apreciada, ya que no deseo habilitar la compresión JSON para todo el servidor.

+0

Eche un vistazo a esta publicación: stackoverflow.com/a/7634875/1131855 No pude editar applicationHost.config a través de Notepad ++. Este enlace sugirió un comando de consola que funcionó para mí –

Respuesta

10

HttpCompression sección se define AppHostOnly en ApplicationHost.config que le impide establecer sus propiedades en web.config.

El módulo de compresión lee solo las propiedades de nivel de servidor de 'ApplicationHost.config', incluso si desbloquea la sección (con appcmd o overrideModeDefault="Allow"), se ignorarán las configuraciones en el nivel inferior.

+0

Gracias por eso, aclaró la confusión. Resulta que incluso si agrega un elemento a ApplicationHost.config para que un sitio intente y permita HttpCompression en el nivel de sitio, permanece bloqueado debido al atributo AppHostOnly. La única forma es agregar el tipo MIME de aplicación/json a la sección "global" en ApplicationHost.config y, por lo tanto, activarlo para todos los sitios en el servidor. –

+0

@tpeczek 'El módulo de compresión solo lee las propiedades de nivel de servidor de 'ApplicationHost.config'' ¿Tiene una fuente para eso? No puedo encontrar * nada * oficial de Microsoft, a pesar de que parece ser el caso, especialmente con IIS8 + – theyetiman

Cuestiones relacionadas