# IIS7 Warming up an AppPool when it's not availiable

I've got the following websites set up:

• UpgradingSite - DefaultAppPool - d:\sites\upgrading - no host header (binding:80)
• Beta Site - BetaAppPool - d:\sites\beta - beta.mysite.com (binding:80)

The setup was made to have Beta Site serve when it's up, but when I disable the site, the upgrading site would take over. This also was done to have something nicer show up if the site ever accidentally got shut down.

Deploy sequence is as follows:

1. Disable Beta Site Website in IIS (Making the Upgrading page visible)
2. Pull down latest changes
3. Run build scripts
4. Enable Beta Site
5. Open IE & Warm up site. (2ish minutes)

Here's the problem:

I need a way to warm the site up while Beta Site is not enabled, however I cannot actually hit the site (since it's disabled). I don't want the site to be enabled till it's available because we don't want our beta users to experience the long load associated with a warm up cycle.

There was a really cool IIS module that did something like this but it's been discontinued and no longer supported.

Any ideas?

Let me clarify. When i meant disabled, I was talking the website entry (endpoint if you will), not the app pool.

The idea is to warm the site up while serving the updating page to users. Once the site is warm and good, then it would flip the switch to allow beta.mysite.com to be served by the now warmed app pool.

I know about scripts to pre-warm by calling pages, but I cannot call pages if the endpoint is down (So the upgrade page/site would still serve users while the site is being warmed up by the script)

-

It can't be "Warm" and disabled at the same time. All "warm" means is that it has gone through the site and loaded .DLLs needed for various stages of the code. You can't pre-warm if the first step is to shut it off and update it... you'd have bad code and pages warm!

You need your admin who starts the site to run a quick VB or powershell script to invoke the pages and get the warmup start. There are plenty of warmup example scripts on the web. They call the website with various URLs and then just ignore the return.

Since you have a pretty clear deploy, I'd write a Enable Beta script that turns up the site and then does the warmup hits, all in one.

UPDATED

Since you clarified, let me add a suggestion. If you are only downing the site and not the app-pool, then you may be able to point a second site at the same directory of files and use the same pool, but configure that site to only be accessible on a high-port (and maybe only locally). Then you could touch the URLS on that site and get the majority of your warmup done by hitting that hidden site.

-
Thanks for the quick response. I think I may not have been clear about what I meant. I've elaborated on my question above. – Aren B Jul 11 '11 at 18:28
I tweaked my answer, but keep in mind I haven't tested it. – Mark Jul 11 '11 at 19:08
It worked. The first hit once the site was warm & i brought up the original site entry was about 10-15s long, but that's a LOT better than the 1-2 minutes a full warm up is. Thanks – Aren B Jul 11 '11 at 20:59