【问题标题】:Web Api gzip compressionWeb Api gzip 压缩
【发布时间】:2016-04-23 15:38:46
【问题描述】:

我已使用此 URL 进行 Web API 压缩,但是当我看到提琴手标头中的输出不是 zip 时。有多个 Zip 选项可用,例如 GZIP、BZIP2 DEFLATE 不确定使用哪一个,请在此处提供帮助

我尝试了以下解决方案,但它们都不起作用:

http://benfoster.io/blog/aspnet-web-api-compression

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api2 gzip


    【解决方案1】:

    有多个 Zip 选项可用,例如 GZIP、BZIP2 DEFLATE 不确定使用哪一个,请在此处提供帮助

    这个列表将被发送到服务器,让它知道客户端关于压缩的偏好。这意味着“我首先更喜欢 GZIP。如果服务器端不支持 GZIP,则回退到 BZIP2 DEFLATE 压缩。如果不支持 BZIP2 DEFLATE,则服务器将不会进行任何压缩。”

    有人已经创建了一个 nuget 包,该包使用您刚刚提出的问题。包名是Microsoft.AspNet.WebApi.MessageHandlers.Compression,其中安装了以下两个包:

    • Microsoft.AspNet.WebApi.Extensions.Compression.Server
    • System.Net.Http.Extensions.Compression.Client

    如果您不需要客户端库,则只需要 Web API 项目中的服务器端包。

    要使用它,您需要修改以在 Gloabl.asax.csApplication_Start 方法的末尾添加以下行:

    GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new ServerCompressionHandler(new GZipCompressor(), new DeflateCompressor()));
    

    要了解有关此软件包的更多信息,请查看此link

    【讨论】:

    • 嗨,我已经完成了以下步骤,在 VS 2013 web api 中创建新的解决方案,添加 nuget 包并配置 Global.ascx .. 当我运行示例代码并签入 fiddler 时,它仍然是它的未压缩
    • 在向服务器发送请求之前,您需要通过添加“Accept-Encoding: gzip, deflate”来配置header。 Fiddler 不会自动添加,但浏览器会自动添加。
    • @user3227615 你测试过我在评论中所说的话吗?
    • 我已经按照您建议的步骤进行了测试,在邮递员中它显示了压缩数据,而提琴手中没有显示相同的数据。在邮递员 GZip 工作正常。在客户端,我们需要编写任何代码来解压文件..?
    • 如果您使用的是浏览器编号。如果您使用的是 Fiddler,您可以在响应中看到一个用于解压的按钮。如果可行,请考虑将其标记为答案并为另一个问题打开另一个线程;-)
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多