comment redémarrer l'application asp.net en plus de la modification de web.config

StackOverflow https://stackoverflow.com/questions/407713

  •  03-07-2019
  •  | 
  •  

Question

Existe-t-il un moyen recommandé de faire rebondir une application asp.net en plus de toucher web.config depuis l’application? is HttpRuntime.UnloadAppDomain () ; la manière préférée de faire ceci? et si oui où faites-vous cela? Lors du déchargement d'une page ou d'un autre endroit dans l'application?

Était-ce utile?

La solution

S'il s'agit d'une version .NET 2.0 ou supérieure, vous pouvez ajouter un " App_offline.htm " fichier, faites une demande au serveur, supprimez-le, puis faites une autre demande au serveur.

Cette séquence d'événements obligera ASP.NET à décharger l'application tant que le fichier app_offline.htm existe dans le dossier.

L’entrée de blog de Scott Guthrie à ce sujet: http://weblogs.asp.net/scottgu/archive/2005 /10/06/426755.aspx

Autres conseils

Toucher web.config depuis une application est une mauvaise idée, IMO. De plus, l’idée d’avoir un fichier que vous modifiez est un peu bizarre, IMO.

La documentation indique spécifiquement que UnloadAppDomain va fermer l'application:

  

UnloadAppDomain permet l’arrêt par programmation des applications inutilisées.

Vous devriez pouvoir passer cet appel n'importe où dans l'application. Notez que vous pourriez obtenir un SecurityException , assurez-vous donc que le moteur d'exécution vous donne les autorisations appropriées (vous voudrez peut-être placer cela dans une bibliothèque et passer un appel, puis configurer la bibliothèque dans le GAC de manière à lui donner une confiance totale).

ce code fonctionne pour moi. appelez-le simplement pour recharger une application.

System.Web.HttpRuntime.UnloadAppDomain();

En savoir plus

  

Cette méthode déchargera simplement notre application. Si vous venez de mettre cette méthode dans un bouton Web ASP.NET, vous avez totalement terminé. Alors, quand notre application sera-t-elle rechargée? En fait, si vous cliquez sur votre bouton, il lancera d’abord notre méthode et déchargera l’application. La page Web sur laquelle nous nous trouvons à ce moment-là sera également rechargée, car nous venons de cliquer sur un bouton et la page Web devrait s'actualiser. Après le lancement de notre méthode, le processus d’actualisation de la page entraîne également le rechargement de notre application.

Vous pouvez également arrêter et démarrer le pool d'applications associé à l'application.

Vous pouvez le faire en appelant la méthode HttpRuntime.ShutdownAppDomain (vous devrez utiliser la réflexion pour l'appeler, car il s'agit d'une méthode statique privée)

Voir Comment redémarrer un processus de travail IIS par programme (c.-à-d. arrêter le domaine ASP.NET actuel) pour un exemple d'utilisation de cette méthode dans une API REST 'Redémarrez'

Vous pouvez redémarrer une application Web en toute sécurité en créant ou en renommant un dossier au moment de l'exécution dans le répertoire de l'application. Évidemment, vous devez donner à l'utilisateur chargé de lancer l'application " modify " droits sur le répertoire Web ou sur un sous-répertoire situé en dessous.

la méthode est mentionnée à http://www.bartlannoeye.be/ blog / redémarrage d'une application Web .net sans redémarrage

J'ai utilisé le code suivant pour le faire dans mon cas. Modifiez-le pour qu'il fonctionne sur un " enregistrable " sous-répertoire

protected void RestartButton_Click(object sender, EventArgs e)
{
    //restart web app (instead of iisreset)
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("restart"));
    if (dir.Exists)
    {
        Directory.Move(dir.FullName, dir.FullName + "ed");
    }
    else
    {
        DirectoryInfo dired = new DirectoryInfo(Server.MapPath("restarted"));
        if (dired.Exists)
        {
            Directory.Move(dired.FullName, dir.FullName);
        }
        else
        {
            Directory.CreateDirectory(dir.FullName);
        }
    }
}

Si vous ne souhaitez pas arrêter et démarrer le pool d'applications, vous pouvez toujours le recycler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top