MVC4 WebAPI无法压缩GET响应

11

我正在处理一个使用MVC4 WebAPI(RC)的项目。响应未启用gzip压缩(IIS动态压缩已启用)。

正常MVC控制器的响应已被压缩。我需要特定设置来启用WebAPI响应的gzip压缩吗?

如果可能的话,我想使用内置的IIS压缩,而不是添加自定义压缩处理程序。

顺便说一句,我知道这几乎是Compress HTTP GET Response的重复,但那里接受的答案并没有真正回答我的问题。


“application/json; charset=utf-8” 的动态压缩是否已启用?即使启用了动态压缩,这也不是默认启用的。 - Eivind T
@EivindT 我该如何检查? - Carvellis
您可以在%windir%\System32\inetsrv\config下的applicationhost.config文件中查找<httpCompression><dynamicTypes>部分。您不应该编辑该文件,而是使用appcmd.exe进行更改,如下所示:https://dev59.com/53E85IYBdhLWcg3wbTD2#7375645 - Eivind T
很棒,这个可行!如果你把它发布为答案,我会接受它。 - Carvellis
2个回答

11
动态压缩是否对 mimetype 为 application/json; charset=utf-8 启用?即使启用动态压缩,此功能默认情况下也未启用。
要查看是否已启用,可以在 %windir%\System32\inetsrv\config 下的 applicationhost.config 文件中查找该部分。
不应编辑该文件,而应使用 appcmd.exe 进行更改,如下面的链接所述:https://dev59.com/53E85IYBdhLWcg3wbTD2#7375645

1
我使用记事本手动编辑applicationhost.config文件时没有遇到任何问题。您只需要在httpCompression -> dynamicTypes部分中添加一行即可:<add mimeType="application/json" enabled="true" />。有关更多详细信息,请参见此链接:http://benfoster.io/blog/aspnet-web-api-compression。完成后,我的Web API响应已经启用了Gzip压缩。 - goku_da_master

0

实际上,您可以安装一个NuGet包来实现这一点,这需要进行一些配置,在客户端中,您只需要添加accept-encoding:gzip。

在ASP.Net能够在任何Web服务器上运行的今天,使用这种方法更好。

在这个视频中,我对使用gzip压缩的WebApi进行了完整的解释。虽然是用西班牙语讲解的,但你知道“代码是一种通用语言”

NinjaTip #16 | 在WebAPI中包含GZip支持 | C# NinjaTip #16 | 在WebAPI中包含GZip支持


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接