Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Alright folks,

Just looking for a little insight into the methods being used by others for the following scenario...

I have a live (.net 3.5) project, which runs from the default folder of IIS7 (mapped to the 'root' of the published wwwroot folder). While we are performing maintenance or upgrades (through a VS built windows installer), I usually replace the application with static pages to explain the system is under maintenance.

We move the published site to a subdirectory (which we isntalled it too), remove old version, install new version, and when we're happy, move it back to the root (replacing the holding pages).

There must be a simpler, lower risk way to do this.

How do others out there approach this (or similar) situations?

share|improve this question

1 Answer 1

up vote 4 down vote accepted

In IIS I use a method called App_Offline. More information can be found on Scott Gu's blog.

The way app_offline.htm works is that you place this file in the root of the application. When ASP.NET sees it, it will shut-down the app-domain for the application (and not restart it for requests) and instead send back the contents of the app_offline.htm file in response to all new dynamic requests for the application. When you are done updating the site, just delete the file and it will come back online.

One thing I pointed out in the talk that you want to keep an eye on is a feature of IE6 called "Show Friendly Http Errors". This can be configured in the Tools->Internet Options->Advanced tab within IE, and is on by default with IE6. When this is on, and a server returns a non HTTP-200 status code with less than 512 bytes of content, IE will not show the returned HTML and instead substitutes its own generic status code message (which personally I don't think is super friendly ).

So if you use the app_offline.htm feature, you should make sure you have at least 512 bytes of content within it to make sure that your HTML (instead of IE's friendly status message) shows up to your users. If you don't want to have a lot of text show-up on the page, one trick you can use is to just add an html client-side comment with some bogus content to push it over 512 bytes. For example:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Site Under Construction</title>
</head>
<body>
    <h1>Under Construction</h1>

    <h2>Gone to Florida for the sun...</h2>

<!--       
    Adding additional hidden content so that IE Friendly Errors don't prevent
    this message from displaying (note: it will show a "friendly" 404
    error if the content isn't of a certain size).

    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2> 
    <h2>Gone to Florida for the sun...</h2>     
-->
</body>
</html>

More discussion about it on our sister site, StackOverflow.

share|improve this answer
    
Fantastic answer GregD - exactly what I'm after. Thanks for your input. –  Dave Nov 19 '10 at 13:29
1  
You're welcome. Glad I could help. –  GregD Nov 19 '10 at 13:31
    
+1 and then some for the note about 404s. IE's decision to display 'friendly' errors seemed infuriatingly arbitrary. That explains a lot. –  SmallClanger Nov 19 '10 at 13:46

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.