gpt4 book ai didi

c# - ASP.NET Core GZIP 编码中间件仅在添加两次后才有效

转载 作者:可可西里 更新时间:2023-11-01 16:40:08 24 4
gpt4 key购买 nike

我正在尝试将 GZIP 编码添加到来自 Web 应用程序 (.NET Core 2.1) 的响应中

我正在关注这个 guide

根据它,我在我的 Startup.cs 中添加了以下几行

public void ConfigureServices(IServiceCollection services)
{
services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>();
});

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{

app.UseResponseCompression();
app.UseStaticFiles();
app.UseSpaStaticFiles();

// Other middleware
}

我正在使用 .NET Core 2.1 附带的默认 WebApplication 模板(使用 React)在全新的 WebApplication 上执行此操作。

然而,当我尝试在我的应用程序上查询 Controller 操作时,没有应用任何编码。

用 chrome 检查请求/响应是否有以下 header : NoGzip

请求 header 包括 Accept-Encoding: gzip, deflate, br header ,所以我认为请求不是问题。

现在这是奇怪的部分。一旦我添加 app.UseResponseCompression();两次,我突然开始进行一些压缩。

这是复制 app.UseResponseCompression(); 两次后 header 的样子: enter image description here

如您所见,gzip header 出现了两次。 (响应的大小也小得多,因此 gzip 压缩似乎有效)

任何人都可以解释发生了什么以及为什么会这样。以这种方式设置项目的主要问题是,稍后在我的管道中我无法解压缩请求,我想这是由于这里发生的一些魔法造成的。

This是重现该问题的示例 Web 应用程序。(运行应用程序,打开 localhost:5015 并导航到获取数据。-观察浏览器 Web 控制台中发生的情况)

最佳答案

有两个实例

Content-Encoding: gzip

表示它已被压缩两次,因此您需要解压缩两次才能获得预期效果。

关于c# - ASP.NET Core GZIP 编码中间件仅在添加两次后才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com