【发布时间】:2021-03-10 18:01:56
【问题描述】:
我有Controller1/Action1,它目前不关心请求中的Accept-Encoding,并且总是返回application/json 响应。
现在在同一个应用程序中,我们添加了Controller2/Action2,它将返回巨大的 json (~5mb) 并且想要使用压缩并决定使用gzip。我们的new client_2 或Controller2/Action2 已准备好以gzip 的身份使用它。
虽然Controller1/Action1 仍然必须将Content-Encoding 返回为application/json 而不是gzip,因为我不认为Controller1/Action1 中的所有client_1s 都通过Accept-Encoding 标头。
那么我怎样才能在 2 个不同的 Actions 上实现 2 个不同的 Content-Encoding。
在 aspnet 管道中添加以下压缩会为所有操作生成 gzip,并且不会为我想要的 Controller1/Action1 返回 JSON,因为我不认为所有 client_1s 都有能力使用 gzip
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options => { options.EnableForHttps = true; });
services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Optimal;
});
}
仅在 Action 上添加下面的属性似乎也没有任何效果,我没有得到任何回复
[Produces("application/gzip")]
【问题讨论】:
标签: asp.net-web-api gzip content-encoding