7

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

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

4

3 回答 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. 通过提琴手访问您的网站。如果您的站点位于本地主机上,则 IE7 不会通过 fiddler 进行路由。Fiddler 2.1.8 有一个简洁的功能,将 localhost (127,0.0.1) 映射到http://ipv4.fiddlerhttp://ipv6.fiddler

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

要验证请求是使用 gzip 编码发出的,请查看顶部面板中的 Request-Headers。您应该看到“客户端:accept-encoding:gzip,deflate”

要验证响应是否使用 gzip 编码发送,请查看底部面板中的 Response-Headers。您应该看到“传输:内容编码:gzip”

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

希望有帮助!

于 2008-10-29T14:38:22.547 回答
1

还要确保 JSON 请求在 HTTP 标头中有例如 accept-encoding:gzip。

于 2008-10-29T00:39:55.687 回答
1

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

于 2008-10-29T00:27:40.643 回答