

When you start an application pool, autoStart is set to true. When you stop an application pool in IIS Manager, autoStart is set to false. The autoStart property is essentially a flag that IIS uses to know which application pools should be started when the World Wide Web Service is started. If an application pool is stopped, IIS will return a "503 Service Unavailable" for any requests to the application pool and it will not start any worker processes. If an application pool is started, it means that IIS will accept requests for URLs within the pool, but it does not necessarily mean that there are any worker processes started. Both application pools and worker processes can be started and stopped. Understanding autoStart requires a bit of background knowledge. Note that this property should not be confused with the autoStart property.

This means that IIS will spin up a worker process when the World Wide Web Service is started, and it will start a new worker process if the existing one is terminated. If you set it to alwaysRunning, IIS will ensure that a worker process is always running for the application pool. The default value for startMode is OnDemand, which means that IIS will not spin up any worker processes until needed to satisfy a client request. This feature is controlled by a the startMode property for the application pool, described (along with other application pool properties) here. I will go over it here because it works hand in hand with Application Initialization to make the application available as soon as possible after starting IIS. This is something that's not strictly speaking a part of Application Initialization in that we added this capability as a built-in feature of IIS, starting with IIS 7.5. Starting a worker process without waiting for a request The third question is a bit more complex and I will save it for my next post.

I would like to address the first two questions here.

