【问题标题】:MVC4 WebAPI not compressing GET responsesMVC4 WebAPI 不压缩 GET 响应
【发布时间】:2012-06-12 13:06:44
【问题描述】:

我正在开发一个使用 MVC4 WebAPI (RC) 的项目。响应未经过 gzip 压缩(IIS 中的动态压缩已启用)。

来自普通 MVC 控制器的响应被压缩。我是否需要特定设置才能为 WebAPI 响应启用 gzip 压缩?

我可以添加一个自定义压缩处理程序,但如果可能的话,我只想使用内置的 IIS 压缩。

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

【问题讨论】:

  • 是否为 mimetype 'application/json; 启用了动态压缩?字符集=utf-8'?默认情况下,即使启用了动态压缩,它也不会启用
  • @EivindT 我该如何检查?
  • 您可以在 部分的 %windir%\System32\inetsrv\config 下查看 applicationhost.config 文件。您不应该编辑该文件,而是使用 appcmd.exe 来更改它,如下所示:stackoverflow.com/a/7375645/243936
  • 酷,行得通!如果您将此作为答案发布,我会接受。

标签: asp.net-mvc gzip asp.net-mvc-4 asp.net-web-api http-compression


【解决方案1】:

其实你可以安装一个nuget包来实现,这需要很少的配置,在客户端你只需要添加accept-encoding:gzip。

如今,当 ASP.Net 能够在任何 Web 服务器中运行时,使用这种方法会更好。

在此视频中,我对使用 gzip 压缩的 WebApi 进行了完整/完整的说明。是西班牙语,但你知道“代码是一种通用语言”

NinjaTip #16 | Incluyendo soporte para GZip en WebAPI | C#

【讨论】:

    【解决方案2】:

    是否为 mimetype application/json; charset=utf-8 启用了动态压缩?默认情况下,即使启用了动态压缩,它也不会启用。

    要查看它是否已启用,您可以查看applicationhost.config 文件下的%windir%\System32\inetsrv\config 部分。

    您不应编辑该文件,而应使用 appcmd.exe 来更改它,如下所示:https://stackoverflow.com/a/7375645/243936

    【讨论】:

    • 我使用记事本手动编辑 applicationhost.config 文件没有问题。您只需在 httpCompression -> dynamicTypes 部分添加一行:<add mimeType="application/json" enabled="true" />。有关详细信息,请参阅此链接:benfoster.io/blog/aspnet-web-api-compression 一旦我这样做了,我的 web api 响应就被压缩了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多