猿问

Asp.Net Core - 在共享托管环境中启用 HttpCompression?

我正在使用运行 ASP.Net Core 2.0 Web 应用程序的共享主机。当我在本地主机上运行该应用程序时,我可以看到 HttpCompression 工作正常(为 JS 文件返回响应标头的内容编码:gzip)。


部署到共享主机后, content-encoding: gzip 响应不再存在。我尝试在 web.config 中添加各种 httpCompression/urlCompression 设置,但托管公司表示我的计划已禁用这些设置。


有没有其他方法可以使 Gzip 压缩工作,或者我是否必须使用在 IIS 中启用它的托管计划?


编辑:我还使用 ResponseCompression 中间件作为 ASP.Net Core 的一部分,内容编码响应标头仍然没有出现。配置代码如下:


    public void ConfigureServices(IServiceCollection services)

    {

        services.AddLogging();


        services.AddResponseCompression(options =>

        {

            options.Providers.Add<GzipCompressionProvider>();

        });


...

}


        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

    {        

        if (env.IsDevelopment())

        {

            loggerFactory.AddDebug(LogLevel.Debug);

            app.UseDeveloperExceptionPage();

            app.UseBrowserLink();

        }

        else

        {

            app.UseExceptionHandler("/error");

        }


        app.UseStatusCodePagesWithRedirects("/error/{0}");

        app.UseResponseCompression();


        app.UseStaticFiles(new StaticFileOptions

        {

            OnPrepareResponse = ctx =>

            {

                ctx.Context.Response.Headers.Append("Cache-Control", "public, max-age=604800");

            }

        });


        app.UseAuthentication();


        app.UseMvc(routes =>

        {

            routes.MapRoute(

                name: "areas",

                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"

              );


            routes.MapRoute(

                name: "default",

                template: "{controller=Home}/{action=Index}/{id?}");

        });


        var options = new RewriteOptions()

            .AddRedirectToHttps();


        app.UseRewriter(options);

    }


守着一只汪
浏览 128回答 1
1回答
随时随地看视频慕课网APP
我要回答