Isso pode ser devido a configurações de compactação no IIS 7.0.
O cabeçalho da solicitação contém o seguinte:
Accept-Encoding: gzip,deflate
para indicar que o navegador aceita conteúdo compactado.
Quando você usa:
context.Response.TransmitFile(filePath);
O IIS analisa o tipo de conteúdo que está definido e decide se deseja compactar a resposta.
Infelizmente, o IIS não parece adicionar
Content-Encoding: gzip
para o cabeçalho Response, o que significa que o Firefox e o Chrome não podem determinar se os dados estão compactados ou não.
Desativar a compactação de conteúdo no IIS deve corrigir isso, mas afetará todo o site. Além disso, a sugestão de definir um tipo de conteúdo pode funcionar em algumas circunstâncias. O IIS 7 decide se deve compactar a resposta com base no tipo MIME.
link fornece o seguinte exemplo para configurar o httpCompression em seu arquivo ApplicationHost.config:
<httpCompression
directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
Outra opção é garantir que 'Content-Encoding: gzip' seja sempre adicionado ao cabeçalho Response, mas você precisará ter cuidado para garantir que a resposta seja realmente compactada, o que pode não ser para todos os tipos de conteúdo .