Método mais eficiente de substituir um site ativo por páginas estáticas durante a manutenção?

1

Tudo bem,

Basta pesquisar um pouco sobre os métodos usados por outras pessoas para o seguinte cenário ...

Eu tenho um projeto ao vivo (.net 3.5), que é executado a partir da pasta padrão do IIS7 (mapeada para a 'raiz' da pasta wwwroot publicada). Enquanto estamos realizando manutenção ou atualizações (através de um instalador de janelas construídas pelo VS), eu costumo substituir o aplicativo por páginas estáticas para explicar que o sistema está em manutenção.

Nós movemos o site publicado para um subdiretório (que também o instalamos), removemos a versão antiga, instalamos a nova versão e, quando estamos felizes, a movemos de volta para a raiz (substituindo as páginas de retenção).

deve ser uma maneira mais simples e de menor risco de fazer isso.

Como os outros por aí abordam essas situações (ou similares)?

    
por Dave 19.11.2010 / 13:15

1 resposta

4

No IIS eu uso um método chamado App_Offline. Mais informações podem ser encontradas no blog do Scott Gu .

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>

Mais discussões sobre isso em nosso site irmão, StackOverflow .

    
por 19.11.2010 / 13:22