IIS 7 and WSUS on Windows Server x64
This post is about the issue with IIS 7 and WSUS on Windows Server x64.
It is common to see people install IIS and WSUS on the same box. However, if the following conditions are met, you may come across a 500.19 that’s strange and hard to diagnose on your own.
- This server is running Windows Server 2008 or Windows Server 2008 R2 x64 build.
- There are IIS application pools that allows 32 bit applications.
The error page can be similar to this one,
1
2
3
4
5
6
7
Module DynamicCompressionModule
Notification SendResponseHandler StaticFile
Error Code 0x8007007e
Requested URL http://localhost:80/
Physical Path C:\inetpub\wwwroot
Logon Method Anonymous
Logon User Anonymous
The root cause is simple. WSUS installer inserts a dynamic compression module into IIS 7 named xpress
. This asks IIS 7 to load %windir%\system32\inetsrv\suscomp.dll
.
All works fine for 64 bit application pools till you allow 32 bit applications. In the folder %windir%\SYSWOW64\inetsrv\
there is not a 32 bit version of suscomp.dll
, so IIS 7 cannot load this dynamic module and reports 500.19 with error code 0x8007007e
.
1
2
ERROR_MOD_NOT_FOUND winerror.h
# The specified module could not be found.
Well, how to resolve it? Depending on your situation, there can be several ways,
- Split your applications, so on this WSUS box, only run 64 bit applications.
- Find a 32 bit copy of
suscomp.dll
, and then copy it to%windir%\SYSWOW64\inetsrv\
. - You can also locate the
suscomp.dll
line inapplicationHost.config
and addbitness64
flag to itspreCondition
field, which effectively prevents the setting from taking effect in 32 bit application pool.
WSUS should ship such a 32 bit copy with it, but since it does not, you have to own a 32 bit server, and copy the dll over.