La meilleure méthode pour remplacer un site actif par des pages statiques lors de la maintenance?

1

Très bien les gens,

Je cherche juste un petit aperçu des méthodes utilisées par d’autres pour le scénario suivant ...

J'ai un projet en direct (.net 3.5) qui s'exécute à partir du dossier par défaut d'IIS7 (mappé sur la "racine" du dossier wwwroot publié). Lorsque nous effectuons des opérations de maintenance ou de mise à niveau (via un programme d’installation Windows construit par VS), je remplace généralement l’application par des pages statiques afin d’expliquer que le système est en cours de maintenance.

Nous déplaçons le site publié vers un sous-répertoire (ce que nous ne l'avons pas non plus), supprimons l'ancienne version, installons la nouvelle version et, lorsque nous le souhaitons, le déplaçons à la racine (en remplaçant les pages conservées).

Il doit exister un moyen plus simple et moins risqué de procéder.

Comment les autres abordent-ils cette situation (ou une situation similaire)?

Dave
la source

Réponses:

4

Dans IIS, j'utilise une méthode appelée App_Offline. Plus d'informations peuvent être trouvées sur le blog de Scott Gu .

Le fonctionnement de app_offline.htm consiste à placer ce fichier à la racine de l'application. Lorsque ASP.NET le voit, il ferme le domaine d'application de l'application (sans le redémarrer pour les demandes) et renvoie à la place le contenu du fichier app_offline.htm en réponse à toutes les nouvelles demandes dynamiques de l'application. Lorsque vous avez terminé la mise à jour du site, supprimez simplement le fichier et il reviendra en ligne.

Une des choses que j'ai signalées dans l'exposé et que vous souhaitez surveiller est une fonctionnalité d'IE6 appelée "Afficher les erreurs HTTP conviviales". Cela peut être configuré dans l'onglet Outils-> Options Internet-> Avancé dans IE et est activé par défaut avec IE6. Lorsque cette option est activée et qu'un serveur renvoie un code d'état autre que HTTP-200 avec moins de 512 octets de contenu, IE ne montrera pas le code HTML renvoyé et remplace son propre message de code d'état générique (qui, à mon avis, n'est pas super amical).

Par conséquent, si vous utilisez la fonctionnalité app_offline.htm, vous devez vous assurer que votre contenu contient au moins 512 octets afin de vous assurer que votre code HTML (au lieu du message de statut convivial d'IE) s'affiche pour vos utilisateurs. Si vous ne souhaitez pas afficher beaucoup de texte sur la page, vous pouvez utiliser une astuce: il vous suffit d'ajouter un commentaire html côté client avec du contenu factice pour le faire passer sur 512 octets. Par exemple:

<!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>

Plus de discussion à ce sujet sur notre site partenaire , StackOverflow .

GregD
la source
Réponse fantastique GregD - exactement ce que je suis après. Merci pour votre contribution.
Dave
1
Je vous en prie. Heureux d'avoir pu aider.
GregD
+1 puis quelques-uns pour la note à propos de 404s. La décision d'IE d'afficher des erreurs "amicales" semblait extrêmement arbitraire. Ça explique beaucoup.
SmallClanger