[英]How to enable compression in aspnetboilerplate dynamic web api
我嘗試在 Myproject.web.host 中添加 Microsoft.AspNetCore.ResponseCompression 並配置它
public void ConfigureServices(IServiceCollection services)
{
//other configs...
services.AddResponseCompression();
//other configs...
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//other configs...
app.UseResponseCompression();
app.UseMvc();
}
它適用於 swagger,但不適用於生成的動態 web api
嘗試使用 F12 開發人員工具、Fiddler 或 Postman 等工具檢查請求 header 和響應標頭中的 Accept-Encoding 設置。 響應中可能不存在 Content-Encoding 和 Vary 標頭。
要解決此問題,您可以嘗試參考以下步驟來設置壓縮提供程序:
創建一個 BrotliCompressionProvider class:
public class BrotliCompressionProvider : ICompressionProvider
{
public string EncodingName => "br";
public bool SupportsFlush => true;
public Stream CreateStream(Stream outputStream) => new BrotliStream(outputStream, CompressionMode.Compress);
}
更改配置服務如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddResponseCompression(options => {
options.Providers.Add<BrotliCompressionProvider>();
options.EnableForHttps = true;
});
services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Fastest;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//other configs...
app.UseResponseCompression();
app.UseMvc();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.