web-dev-qa-db-fra.com

GZIP dans le noyau .net ne fonctionne pas

J'essaie d'ajouter le middleware Gzip à mon application principale ASP.net. 

J'ai ajouté le package suivant: 

"Microsoft.AspNetCore.ResponseCompression": "1.0.0"

Dans mon startup.cs pour la méthode Configure Services, j'ai les éléments suivants: 

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
    services.AddResponseCompression(options =>
    {
        options.Providers.Add<GzipCompressionProvider>();
    });

    services.AddMvc();
}

Dans ma méthode de configuration, j'ai les éléments suivants: 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseResponseCompression();
    app.UseMvc();
}

Cependant, lorsque j'essaie de charger une page, elle ne s'affiche pas sous forme compressée au format Gzip. J'ai utilisé à la fois une réponse de chaîne et la sortie d'une vue. Les en-têtes de réponse en chrome se présentent comme suit: 

 enter image description here

Je suis sur une machine Windows en développement dans Visual Studio. Lors de l'exécution de l'application, j'ai simplement essayé d'exécuter à partir de Visual Studio (via F5) et d'utiliser la commande "dotnet run" à partir de la ligne de commande. Ni la compression GZip en sortie. 

12
MindingData

Pour activer GZIP dans le noyau .net 2. *
1. Installez Microsoft.AspNetCore.ResponseCompression avec la commande Install-Package Microsoft.AspNetCore.ResponseCompression ou le gestionnaire de paquets Nuget.
2. Ajoutez le code suivant dans Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{

  app.UseResponseCompression();
  app.UseMvc();

}

public void ConfigureServices(IServiceCollection services)
{

  // Configure Compression level
  services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);

  // Add Response compression services
  services.AddResponseCompression(options =>
  {
      options.Providers.Add<GzipCompressionProvider>();
      options.EnableForHttps = true;
  });

}
3
Mohammad Dayyan

Vous avez résolu ce problème en ajoutant la propriété d'option de compression de réponse "EnableForHttps" comme indiqué ci-dessous:

services.AddResponseCompression(opt =>
        {
            opt.Providers.Add<GzipCompressionProvider>();
            opt.EnableForHttps = true;
        });
 services.Configure<GzipCompressionProviderOptions>(options => options.Level = 
 CompressionLevel.Fastest);
3
ashwathi

J'ai réussi à activer le middleware Response Compression en utilisant IIS Express en supprimant 

<httpCompression ...> 
...
</httpCompression> 

dans .vs\config\applicationhost.config

2
greentrees

En plaçant la UseResponseCompression deux fois sous l’autre, j’ai réussi à la faire fonctionner. Je ne sais pas du tout comment cela a fonctionné. Je cherche toujours une solution acceptée.

0
Alexander