The problem customer experienced is IIS compression doesn’t work after configured compression for static files. The same setting works with DEV environment.
We checked everything about compression related settings and no problem found. Then we collected a hang dump for w3wp.exe, and found HTTP compression failed to initialize.
- There is no HTTP compression thread
- HTTP compression initialization status is COMP_INIT_NONE, the correct one should be COMP_INIT_DONE.
000007ff`5e552d1c w3core!HTTP_COMPRESSION::sm_InitStatus = COMP_INIT_NONE (0)
We did some simple test and found HTTP compression works if Network Service was used as the application pool’s identity but failed with a customized identity. We compared the permissions and privileges between Network Service and this customized identity, no differences found.
Then, we attached a debugger and broke at the HTTP compression initialization function “w3core!HTTP_COMPRESSION::Initialize”. A “access denied” error was occurred when try to read the compression metabase(“/LM/W3SVC/Filters/Compression”).
HTTP compression starts working after grant IIS_WPG group read permission for “/LM/W3SVC/Filters/”. By default, IIS_WPG group has read and write permission for “/LM/W3SVC/Filters/” and its child nodes.
326902 ACLs and using MetaACL for metabase ACL permission changes
See you next time,