好的,我已经阅读了几个小时。数十个 SO 帖子和博客等。找不到答案。
目标:启用来自我的 WCF 服务的 json 响应的动态 http 压缩。
注意:当 applicationhost.config 包含以下内容时,gzip 已经适用于静态内容和动态内容:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
</system.webServer>
不幸的是,在我使用的服务器上,applicationhost.config 中缺少以下行:
<add mimeType="application/json; charset=utf-8" enabled="true" />
而且我无法手动添加它,因为服务器是由 Elastic Beanstalk 启动的 AWS EC2 实例(因此我可以在一个实例上更改它,但不是在所有实例启动时都更改它)。
同样不幸的是,applicationhost.config 包括这一行:
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
这意味着我无法覆盖我的应用程序 web.config 中的 httpCompression 部分。
我的问题:还有其他方法可以让我尝试对动态内容进行 gzip 压缩吗?
如果 overrideModeDefault="Allow" 那么我可以将 httpCompression 部分放在我的应用程序的 web.config 中并期望它覆盖吗?
如果需要,很高兴添加进一步的说明。
干杯