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:
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.
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;
});
}
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);
J'ai réussi à activer le middleware Response Compression en utilisant IIS Express en supprimant
<httpCompression ...>
...
</httpCompression>
dans .vs\config\applicationhost.config
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.