2016-05-20 27 views
0

.NETコアとKestrel Webサーバーを使用してオンザフライでHTTPレスポンスをエンコードしようとしています。次のコードは機能しません。応答がブラウザに読み込まれません。Kestrelと.NETのコアミドルウェアを使用して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); 


     } 

答えて

0

ことのすべては、次のミドルウェアを起動する前に発生しなければならない(例えば_next.Invokeか何を持っている)、そして、あなたはawait context.Response.Body.FlushAsync();べき次のミドルウェアを起動した後。応答圧縮について

2

詳細な説明がここにあります:https://docs.microsoft.com/en-us/aspnet/core/performance/response-compression

簡単な要約
圧縮は2つの段階で有効にすることができます。

  1. Microsoft.AspNetCore.ResponseCompressionパッケージへの参照を追加します。

    public void ConfigureServices(IServiceCollection services) 
    { 
        services.AddResponseCompression(); 
    } 
    
    public void Configure(IApplicationBuilder app) 
    { 
        app.UseResponseCompression(); 
    
        ... 
    } 
    

それだ:

  • は、アプリケーションの起動時に圧縮を有効にします。クライアントが圧縮エンコーディングを受け入れる場合、レスポンスは圧縮されます。

  • 関連する問題