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

我无法让 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 确保确实修改了此文件。

https://stackoverflow.com/questions/2138243/

相关文章:

python - 使用常规编码器使对象 JSON 可序列化

json - 如何让 cURL 仅输出 HTTP 响应正文(JSON)而不输出其他 header 等

java - 由于输入结束 jackson 解析器,没有要映射的内容

java - 忽略 Jackson 序列化的特定字段

java - 与 Jackson 映射时将默认值设置为空字段

json - REST:使用一个请求更新多个资源 - 它是标准的还是应该避免的?

json - AngularJS - 服务器端验证和客户端表单

c# - 将 XML 转换为动态 C# 对象

c# - 将 JSON 数据发布到 ASP.NET MVC

javascript - 对象和哈希之间的区别?