Testing Applications for Compatibility
Whether you are deploying existing applications that were developed for earlier versions of IIS on a server running IIS 6.0 in worker process isolation mode, or you are deploying new applications, it is important to test the applications for compatibility with worker process isolation mode features.Functional testing consists of installing and configuring applications on a test server, and then sending HTTP requests to the application from a client on another computer. Load testing is functional testing that consists of sending HTTP requests in rapid succession to stress the worker process and the server. In both cases, you must diagnose the results for possible incompatibilities.Figure 4.5 shows the process for testing application compatibility with worker process isolation mode.

Figure 4.5: Testing Applications for Compatibility
Checking for Known Conflicts with IIS 6.0
Most Web applications that run on earlier versions of IIS will run on IIS 6.0 in worker process isolation mode. However, in some cases, applications cannot run in worker process isolation mode. In other cases, you might be required to disable certain features to run an application in worker process isolation mode.
Applications that have the following characteristics are incompatible with worker process isolation mode, or must have certain features disabled to run in worker process isolation mode:
Require Read Raw Data Filters. Applications that require Read Raw Data Filters are not compatible with worker process isolation mode. The Read Raw Data Filters feature is only supported in IIS 5.0 isolation mode.
Require Digest authentication. You must use LocalSystem as the application pool identity for standard Digest authentication. This restriction does not apply when you are using Advanced Digest authentication.
Run only as a single instance. When an application only runs as a single instance, you cannot configure Web gardens, you cannot run the application in more than one application pool, and you cannot use overlapped recycling.
URL length exceeds 16 kilobytes. The default request header limit for HTTP.SYS is 16KB.
ASP applications that use consecutive dots in an include file. Using two or more consecutive dots in an include file only works if parent paths are enabled. Alternatively, consider not using includes files.
Dependency on Inetinfo.exe. The application requires Inetinfo.exe, but the Inetinfo.exe process does not run in worker process isolation mode. This occurs rarely, if at all.
Require Dllhost.exe. The application requires Dllhost.exe, but the Dllhost.exe process is not available in worker process isolation mode. This occurs rarely, if at all.
Testing Applications for Compatibility with IIS 6.0
You can begin to test the compatibility of an application during the setup process for each application that you install on IIS 6.0.To perform a setup test, complete the following steps:
Install the application by using the setup software provided.
Examine the IIS log (in \\Windows\System32\LogFiles\W3SVCxxx) for messages that indicate a WWW service failure. Also, look at the system Event log for 500-level errors.
Some common incompatibilities can be identified when you set up applications to run in IIS 6.0 worker process isolation mode. You can recognize these common incompatibilities by their symptoms, and then take the appropriate action to resolve them.
Version Detection Incompatibility
During setup, some applications fail to detect the IIS version correctly because they try to read non-standard registry keys that do not exist in IIS 6.0. The supported version information is under the following registry key: HKLM\SOFTWARE\Microsoft\InetStp
Symptoms
Some applications check for a 5 or a 4 in the version information, and then quit setup if the value is 6.Non-standard registry locations where applications might look for version information include the following:
HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
HKLM\SOFTWARE\Microsoft\InetMGR\Parameters
Resolution
Add the registry keys that the application is searching for to the registry. Otherwise, you cannot run the applications until you modify them to search for an existing registry key.
Wwwroot and Scripts Retrieval Incompatibility
Some applications use a nonexistent registry key to retrieve wwwroot and scripts. When this is true, the following message appears during setup:
HKLM/System/CurrentControlSet/W3svc/Parameters/Virtual Roots
"/ "=REZ_SZ:<physical location of wwwroot>
"/Scripts"=REZ_SZ:<physical location of scripts>
Symptom
Setup shows no default value for the wwwroot and scripts directories.
Resolution
Add the registry keys that the application is searching for to the registry. Otherwise, you cannot run the applications until you modify them to search for an existing registry key.
Testing Applications for Functional Compatibility with IIS 6.0
You can test the functional compatibility of an application running in worker process isolation mode by installing the application on a test server, and then sending HTTP requests to the application from another computer. You can identify the following functional incompatibilities when you send correctly composed HTTP requests to applications that were developed for earlier versions of IIS, or to new applications yet to be tested.
ISAPIs Not Enabled in the Web Service Extensions Node
Some application setups install script maps for their script engine but do not enable the script engine, and the documentation for the application might not mention the need to set the properties (by using IIS Manager, for example).
Symptoms
If your log file (%systemroot%\system32\logfiles\w3svc\Filename.log) returns a 404 error with suberror code 2, then your application is trying to use a disabled ISAPI or Common Gateway Interface (CGI) file.
Resolution
Use the Web Service Extensions node in IIS Manager to enable the ISAPI or CGI file. Be sure to enter the exact path entry that is in the scriptmaps setting in the path part of the entry.
MIME Types Incompatibility
Your application might use a file name extension that is not recognized by IIS 6.0.
Symptoms
If your WWW service log file, which is located in systemroot%\system32\logfiles\w3svc\Filename.log, returns a 404 error with suberror code 3, then a file name extension is not recognized by IIS 6.0.
Resolution
Manually add the file name extension to the computer-level properties in IIS Manager. For more information about configuring MIME types, see "Configure MIME Types" in "IIS Deployment Procedures" in this book.
Recycling Incompatibility
The configurable recycling feature in IIS 6.0 might expose some design flaws in your applications. The most common problem is that applications take too long to start up or to shut down. For example, it is not a problem in IIS 5.0 if an application receives an access violation when shutting down. However, an IIS 6.0 administrator might see error messages in the Event log indicating that the application pool is taking too long to shut down. If the application needs to warm up when it starts up, then recycling causes the application to run at low efficiency every time it starts up. If the application does not save its state data when it shuts down, it loses state data often. Test the impact of the recycling period by configuring it to a shorter time and continuing to check the log.
Symptoms
You can identify recycling incompatibility problems by testing the worker process with a short recycle period. If problems exist in the applications in the application pool that is served by the worker process, the following symptoms might occur:
If an application is shutting down slowly, you might find error messages in the Event log, which indicate that the worker process is exceeding its shutdown time limit.
If the application needs time to warm up when it starts, response times might be very slow at first.
Resolution
The application might require extensive modification. While running the application unmodified, you cannot use recycling. For more information about configuring the features for worker process recycling, see "Configure Application Pool Recycling" in "IIS Deployment Procedures" in this book.
Overlapped Recycling and Single Instance Application Incompatibility
If your application cannot run as multiple instances, then overlapped recycling fails. The failure occurs because the new worker process is running before the existing worker process is terminated, resulting in an attempt to run two instances of the same application.
Symptoms
The symptoms are synchronization-related, such as an access denied error that appears in the IIS log (in \\Windows\System32\LogFiles\W3SVCxxx:).
Resolution
Do not use overlapped recycling. For more information about configuring the features for recycling worker processes, see "Configure Application Pool Recycling" in "IIS Deployment Procedures" in this book.
Subauthentication Is Not Installed
Subauthentication is not installed by default. You require subauthentication if both of the following are true:
You are using Digest authentication on your server running IIS 6.0.
The domain controller is running IIS 5.0.
Symptom
Digest authentication fails.
Resolution
Install subauthentication on your server. For information about how to install subauthentication, see "Install Subauthentication" in "IIS Deployment Procedures" in this book.