use*_*006 4 .net middleware asp.net-core-mvc kestrel-http-server
我希望使用 .NET Core 和 Kestrel Web 服务器动态编码 HTTP 响应。以下代码不起作用,响应无法在浏览器中加载。
var response = context.Response;
if (encodingsAccepted.ToArray().Any(x => x.Contains("gzip")))
{
// Set Gzip stream.
context.Response.Headers.Add("Content-Encoding", "gzip");
// Wrap response body in Gzip stream.
var body = context.Response.Body;
context.Response.Body = new GZipStream(body, CompressionMode.Compress);
}
Run Code Online (Sandbox Code Playgroud)
有关响应压缩的详细说明,请访问:https : //docs.microsoft.com/en-us/aspnet/core/performance/response-compression
快速总结
压缩可以通过 2 个步骤启用:
Microsoft.AspNetCore.ResponseCompression包的引用。在应用程序启动时启用压缩:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression();
}
public void Configure(IApplicationBuilder app)
{
app.UseResponseCompression();
...
}
Run Code Online (Sandbox Code Playgroud)就是这样。现在,如果客户端接受压缩编码,响应将被压缩。
所有这些都必须在调用下一个中间件(例如_next.Invoke或您有什么)之前发生,然后在调用下一个中间件之后,您应该await context.Response.Body.FlushAsync();.
| 归档时间: |
|
| 查看次数: |
3277 次 |
| 最近记录: |