我有一个运行在Azure上的ASP.NET核心2.2应用程序。
我遇到的问题是,来自应用程序的响应没有被压缩(没有内容编码头)。
我对application的理解是,我的应用程序将耗尽IIS后面的进程,因此IIS应该负责压缩响应。我的理解也是,应用程序服务上的IIS应该默认配置为使用gzip自动压缩JavaScript和CSS等文件类型,但是这种情况不会发生。
发送给服务器的请求都有正确的接受编码头,所以浏览器没有问题(我还使用多个浏览器进行了检查)。
我已经尝试在urlCompression中显式地设置web.config
<?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)?
发布于 2019-09-26 08:03:38
我试过站在我这边。默认情况下,在Azure上启用压缩,即使使用HTTPS协议。
要解决此问题,需要捕获失败的请求跟踪日志。在日志中,它将告诉您为什么压缩不能工作,如下所示:

对原因的解释可以在此页的底部找到。
要捕获失败的请求跟踪日志,请执行以下步骤:
( a)在Azure门户中启用“失败请求跟踪”:

( b)将下面的配置添加到web.config的“web.config”部分中
<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页面中,单击“下载”按钮将在友好的视图中打开日志。在日志中搜索“压缩”。以下是一个成功的例子:

https://stackoverflow.com/questions/58097907
复制相似问题