【问题标题】:How can I gzip json returned from a JsonResult action in ASP.NET MVC?如何 gzip 从 ASP.NET MVC 中的 JsonResult 操作返回的 json?
【发布时间】:2013-10-19 08:23:48
【问题描述】:

我确实在我的 IIS 7.5 Web 服务器上正确设置了 gzip,它在大多数情况下都能正常工作。

但是我可以看到响应标头显示我对 JsonResult 方法发出的任何请求都没有被压缩。我需要更改什么以便 JsonResult 返回带有 Content-Encoding: gzip 的数据?

这是调用 JsonResult 方法时的头部截图:

与调用返回html的东西时的标题截图相比,例如RenderPartial():

编辑:这些是我在 applicationHost.config 中的压缩设置:

    <httpCompression 
        directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="application/json; charset=utf-8" enabled="true" />                
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </dynamicTypes>
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="application/json; charset=utf-8" enabled="true" />                
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
    </httpCompression>

【问题讨论】:

标签: c# asp.net-mvc json iis-7 gzip


【解决方案1】:

请确保您的 IIS applicationHost.config 文件位于 %WinDir%\System32\inetsrv\config\applicationHost.config 包含以下代码块。

<system.webServer>
    <urlCompression doDynamicCompression="true" />
    <httpCompression>
      <dynamicTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />       
      </dynamicTypes>
    </httpCompression>
</system.webServer>

【讨论】:

  • 不幸的是,这些设置已经设置为 TRUE。我已经用我的压缩设置更新了问题。
【解决方案2】:

您的配置看起来正确。可能是您尚未达到 IIS 开始压缩所有内容的阈值。

试试这个: 在 IIS 管理器中,转到配置编辑器,然后找到 system.WebServer/serverRuntime。 查看frequentHitThreshold 和frequentHitTimePeriod 设置,然后将它们下拉以保证您在测试时达到阈值。

这里有更多阅读: http://blogs.msdn.com/b/asiatech/archive/2013/02/19/unable-to-compress-json-result-in-iis-7-x.aspx

【讨论】:

  • 抱歉,我尝试设置frequentHitThreshold=1,但仍然没有帮助。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2011-08-19
  • 1970-01-01
相关资源
最近更新 更多