如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?

12 asp.net ajax json gzip

我在IIS7中启用了压缩,除了ASP.NET AJAX构建的响应之外,它在所有响应上都按预期工作.我有一个向客户端提供数据的Web服务.直接调用Web服务时,会对其进行适当压缩.但是,当通过ASP.NET AJAX调用它时,JSON响应不会被压缩.

如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?

ste*_*son 5

IIS7使用内容编码来决定是否压缩响应(当然假设浏览器可以接受gzip).它们在applicationHost.config中设置,默认情况下列表是

<dynamicTypes>
     <add mimeType="text/*" enabled="true" />
     <add mimeType="message/*" enabled="true" />
     <add mimeType="application/x-javascript" enabled="true" />
     <add mimeType="*/*" enabled="false" />
</dynamicTypes>
Run Code Online (Sandbox Code Playgroud)

如果直接调用Web服务,则XML响应的内容类型text/xml将被压缩.当由AJAX调用时,JSON响应的内容类型为application/json,因此它不会被压缩.将以下内容添加到applicationHost.config应该修复...

     <add mimeType="application/json" enabled="true" />
Run Code Online (Sandbox Code Playgroud)


Kel*_*tex 1

你使用的是什么浏览器?IE 6 中存在一个错误,会导致压缩错误。因此 ASP.NET AJAX 关闭对 IE 6 浏览器的压缩:

http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx

另外,您是否启用了 ASMX 文件压缩?