HOWTO: Run IIS6 in native Worker Process Isolation Mode

Question:

I've got a box running fine these days, but now I want to experiment a bit. I have a long-running .asp page and I want to change the application pool settings for it. But when I go to the IIS console, there is no entry in the tree for Applicaiton Pools! I may have done something in the past that got rid of that branch of the tree, but can't remember now what that might have been.

Any idea how to restore it to it's previous glory and utility?

Answer:

It sounds like IIS6 is configured to run in IIS5 Compatibility Mode. This happens when:

  1. You upgrade the server to IIS6
  2. User explicitly configures IIS6 to run in IIS5 Compatibility Mode

Since IIS5 did not have the concept of Application Pools (it was introduced in IIS6), the IIS Manager UI will not show a tree for Application Pools when IIS6 runs in IIS5 Compatibility Mode.

Thus, to use and configure Application Pools, you need to configure IIS6 to run in its native Worker Process Isolation Mode. You do this by:

  1. Right-click properties on the "Web Sites" node in the IIS Manager UI

  2. Select the "Service" tab in the property page

  3. There will be a checkbox controlling whether IIS6 runs "WWW service in IIS5 isolation mode" or not. Uncheck it to have IIS6 run with IIS6 Worker Process Isolation Mode.

    FYI: To switch modes, you must restart IIS.

While I always suggest users to run IIS6 in its native Worker Process Isolation Mode to enjoy the benefits of Application Pools, I am not certain how Application Pools help with your long-running ASP pages. ASP already has a script timeout property which limits the amount of time an ASP page can execute, and it applies regardless of IIS mode. So, unless you intend to detect this long-running ASP page by the amount of memory or CPU it uses, Application Pools do not directly address your issue.

Furthermore, your server may be running in IIS5 Compatibility Mode for other reasons (such as legacy ISAPI Filters/Extensions) and switching modes may break things. Bottom line - you must figure out yourself what mode to configure IIS6 to run in.

//David