簡體   English   中英

如何在 aspnetboilerplate 動態 web api 中啟用壓縮

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM