asp.net - 如何使用 IIS 7.5 压缩来自 ASP.NET MVC 的 Json 结果

标签 asp.net asp.net-mvc json iis-7 http-compression

我无法让 IIS 7 正确压缩来自 ASP.NET MVC 的 Json 结果。我在 IIS 中启用了静态和动态压缩。我可以用 Fiddler 验证普通的 text/html 和类似的记录是否被压缩。查看请求,存在接受编码 gzip header 。响应的 mimetype 为“application/json”,但未压缩。

我发现问题似乎与 MimeType 有关。当我包含 mimeType="*/*" 时,我可以看到响应已正确压缩。如何在不使用通配符 mimeType 的情况下让 IIS 进行压缩?我认为这个问题与 ASP.NET MVC 生成内容类型 header 的方式有关。

CPU 使用率远低于动态限制阈值。当我检查来自 IIS 的跟踪日志时,我可以看到它由于找不到匹配的 mime 类型而无法压缩。

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="false">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
    <dynamicTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" enabled="true" />
        <add mimeType="application/json" enabled="true" />
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" 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="application/json" enabled="true" />
    </staticTypes>
</httpCompression>

最佳答案

确保您的 %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>

来自 link @AtanasKorchev 的。

正如@simon_weaver 在评论中所说,您可能在 64 位 Windows 上使用 32 位编辑器编辑了错误的文件,请使用 notepad.exe 确保确实修改了此文件。

关于asp.net - 如何使用 IIS 7.5 压缩来自 ASP.NET MVC 的 Json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2138243/

相关文章:

json - 按值对 json 进行排序,然后提取第一个值

javascript - 在 javascript JSON 中添加字符串作为键

javascript - Jquery AJAX ($.get or $.ajax) HTML 文件检索、操作和 JSON 发送

c# - 名为 'System' 的表的 LINQ to SQL 问题

asp.net - 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

c# - 一个内部有多个类的 DTO 类

asp.net-mvc - 更改特定表单的验证设置

asp.net-mvc - MVC Action Filters Collection 被修改;枚举操作可能不会执行

asp.net - 有没有办法从 ASP.NET 应用程序确定站点的 SSL 端口是什么?

c# - 如何在关闭弹出窗口时重新加载父页面?