实际上很容易做到这一点,至少使用 .NET 4.0(我没有使用 3.5 进行测试)。我所做的只是让 IIS 7 处理它。无需创建自定义压缩过滤器。
首先,确保您已安装 IIS 7 的动态压缩功能。然后,在 IIS 管理器中选择服务器并使用压缩模块打开动态压缩。或者,您可以从命令行执行此操作:
C:\windows\system32\inetsrv\appcmd set config -section:urlCompression /doDynamicCompression:true
接下来,编辑以下文件。您可能必须复制它而不是直接编辑配置(Notepad++ 抱怨我),然后在您准备好时覆盖原件。
C:\Windows\System32\Inetsrv\Config\applicationHost.config
在那里,您会在 下找到一个 部分。在 下,当客户端发送 Accept-Encoding: gzip 标头时,您需要添加所有要压缩的 mime 类型。例如:
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="application/xml" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
完成所有这些后,回收您的应用程序池就可以了。如果这不起作用,请尝试重新启动服务器并确保在应用程序级别和服务器级别打开动态压缩。
注意:根据我读过的一些帖子,曾经有一个错误,您必须指定字符编码(例如,“application/json; charset=utf-8”)。但是,我没有任何问题。