运行TargetFramework net472的.netcore应用程序上的ResponseCompression



我一直试图让Microsoft.AspNetCore.ResponseCompression 2.1.1在一个以.net完整框架472为目标的.net核心项目应用程序上运行,但没有成功。

我已经把这个项目剥离到它的核心,只留下:

public void ConfigureServices(IServiceCollection services)
{ 
services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
});
} 

public void Configure(IApplicationBuilder app)
{ 
app.UseResponseCompression();   
app.UseStaticFiles(); 
}

我正在尝试让中间件压缩一个静态文件。

请求标头:

GET http://localhost:3721/css/Site.css HTTP/1.1
Host: localhost:3721
Connection: keep-alive
Accept: text/css
Accept-Encoding: gzip, deflate, br, *

响应标头:

HTTP/1.1 200 OK
Date: Sat, 03 Nov 2018 01:20:21 GMT
Content-Type: text/css
Server: Kestrel
Last-Modified: Thu, 13 Jul 2017 16:35:14 GMT
Accept-Ranges: bytes
ETag: "1d2fbf600bbcfda"
Vary: Accept-Encoding
Content-Length: 730

我的实现是否有任何明显的错误,会导致静态文件响应标头而不是echo

content-encoding: gzip (or other)

是否可以挂接决定是否压缩请求的方法?

对于响应标头,它已经被压缩,并用Vary: Accept-Encoding指示cache (vary) responses

可变

当服务器以值Accept Encoding向客户端和代理,Vary标头向客户端或代理指示应该根据接受请求的编码标头。返回内容的结果使用Vary:Accept Encoding标头时未压缩的响应被单独缓存。

您可以尝试以下不同的方法来查看不同的结果:

  • Chrome:按Ctrl + F5检查响应标头
  • 试试PostMan
  • 试试Fiddler

最新更新