首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GZip压缩不适用于托管在Azure上的ASP.NET Core2.2应用程序

GZip压缩不适用于托管在Azure上的ASP.NET Core2.2应用程序
EN

Stack Overflow用户
提问于 2019-09-25 12:02:40
回答 1查看 1.6K关注 0票数 2

我有一个运行在Azure上的ASP.NET核心2.2应用程序。

我遇到的问题是,来自应用程序的响应没有被压缩(没有内容编码头)。

我对application的理解是,我的应用程序将耗尽IIS后面的进程,因此IIS应该负责压缩响应。我的理解也是,应用程序服务上的IIS应该默认配置为使用gzip自动压缩JavaScript和CSS等文件类型,但是这种情况不会发生。

发送给服务器的请求都有正确的接受编码头,所以浏览器没有问题(我还使用多个浏览器进行了检查)。

我已经尝试在urlCompression中显式地设置web.config

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    </system.webServer>
  </location>
</configuration>

但这没什么区别。

我也尝试过将IIS.Compression.SiteExtension安装到App,但这也没有启用压缩。

我知道我可以在我的应用程序中直接使用响应压缩中间件,但是我更愿意让IIS来处理它。

因此,简单地说,我的问题是如何在application中为我的应用程序获得压缩( GZIP或Brotli)?

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 08:03:38

我试过站在我这边。默认情况下,在Azure上启用压缩,即使使用HTTPS协议。

要解决此问题,需要捕获失败的请求跟踪日志。在日志中,它将告诉您为什么压缩不能工作,如下所示:

对原因的解释可以在此页的底部找到。

要捕获失败的请求跟踪日志,请执行以下步骤:

( a)在Azure门户中启用“失败请求跟踪”:

( b)将下面的配置添加到web.config的“web.config”部分中

代码语言:javascript
复制
<tracing>
 <traceFailedRequests>
 <remove path="*" />
 <add path="*">
  <traceAreas>
   <add provider="ASP" verbosity="Verbose" />
   <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
   <add provider="ISAPI Extension" verbosity="Verbose" />
   <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
  </traceAreas>
  <failureDefinitions statusCodes="200" />
 </add>
</traceFailedRequests>
</tracing>

使用此设置,它将捕获所有具有200状态代码的请求。

3、通过FTP或KUDU在web应用程序的root\LogFiles\W3SVCXXX文件夹中找到日志(推荐)。文件名类似于"fr000001.xml“。在KUDU页面中,单击“下载”按钮将在友好的视图中打开日志。在日志中搜索“压缩”。以下是一个成功的例子:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58097907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档