【问题标题】:WCF REST CompressionWCF REST 压缩
【发布时间】:2009-09-09 21:45:35
【问题描述】:

我有一个返回大量 XML 的 REST 服务,价值约 150k。

例如http://xmlservice.com/services/RestService.svc/GetLargeXML

因此,我想压缩来自服务器的响应,因为 GZIP 应该将它减少到更小的东西。到处搜索后,我终生无法找到如何为 WCF REST 服务执行压缩的示例。救命!!

注意:我的服务由第三方托管,我无法通过 IIS 执行此操作,因为他们不支持。

【问题讨论】:

    标签: wcf rest compression gzip


    【解决方案1】:

    实际上很容易做到这一点,至少使用 .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”)。但是,我没有任何问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多