如何让ASP.NET AJAX使用GZip压缩发送JSON响应?

7

我已经在IIS7中启用了压缩功能,并且所有响应都可以正常工作,除了由ASP.NET AJAX构建的响应。 我有一个Web服务向客户端提供数据。 当直接调用Web服务时,它被正确地压缩。 但是,当通过ASP.NET AJAX调用时,JSON响应不会被压缩。

如何使ASP.NET AJAX发送经过GZip压缩的JSON响应?

3个回答

3
这应该可以直接使用。要验证我的ASP.NET AJAX JSON响应是否使用GZip压缩,请按照以下步骤操作:
  1. 下载 Fiddler(版本2.1.9是最新版)

  2. 在IE 7中启用Fiddler:工具-> Fiddler2

  3. 由于所有流量都通过代理路由,因此您需要设置Fiddler在HTTP标头中应用accept-encoding: Gzip。规则-> 应用GZip编码

  4. 通过fiddler访问您的站点。如果您的站点位于本地主机上,则IE7不会通过fiddler路由此站点。 Fiddler 2.1.8有一个很棒的功能,可以将localhost(127,0,0,1)映射到 http:// ipv4.fiddler http:// ipv6.fiddler

  5. 在Fiddler会话中找到asmx请求。

要验证请求是否使用gzip编码,请查看顶部面板中的请求标头。您应该看到"客户端:accept-encoding:gzip,deflate"

要验证响应是否使用gzip编码,请查看底部面板中的响应标头。您应该看到"传输:内容编码:gzip"

我在Vista Business SP1上安装了IIS 7,没有进行其他配置,我的项目使用带有标准Web服务的ASP.NET AJAX。

希望这可以帮助您!


1

您需要检查.asmx文件扩展名是否在压缩文件类型列表中,这是ajax json的来源。


1
请确保JSON请求在HTTP头中包含例如accept-encoding:gzip。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接