2010-09-22 4 views
5

Nous avons une application qui collecte des statistiques de compteur et nous aimerions que les valeurs soient réinitialisées après l'exécution de la commande iisreset et c'est tout.Comment déterminer la durée de vie du domaine d'application ASP.NET

Microsoft dit Application_Start est:

Appelée lorsque la première ressource (par exemple comme une page) dans une application ASP.NET est demandée. La méthode Application_Start est appelée une seule fois pendant le cycle de vie d'une application. Vous pouvez utiliser cette méthode pour effectuer des tâches de démarrage tels que le chargement des données dans le cache et l'initialisation des valeurs statiques.

Voilà comment nous sommes actuellement le faire:

protected void Application_Start(object sender, EventArgs e) 
{ 
    _counters.Get<AutoCounter>("TAS:RequestCount").Reset(); 
    _counters.Get<AutoCounter>("TAS:RequestTime").Reset(); 
    _counters.Get<AutoCounter>("TAS:TimeBetweenErrors").Reset(); 
    _counters.Get<AutoCounter>("TAS:ErrorCount").Reset(); 
} 

Cependant, ceux-ci sont à la réinitialisation des intervalles inattendus. Qu'est-ce qui détermine la fin du cycle de vie du domaine d'application et l'appel de cette méthode lors de la prochaine requête?

+0

Qu'est-ce qui vous fait penser que les intervalles sont arbitraires plutôt qu'inattendus? –

+0

@Conrad, arbitraire n'était probablement pas le bon mot à utiliser - je l'ai changé à votre suggestion. Merci! – Bleser

Répondre

7

Il existe de nombreuses raisons pour lesquelles une application Web est redémarrée. Ce article inclut la liste partielle suivante.

  • le web.config est édité

  • le machine.config est édité

  • le global.asax est édité

  • fichiers sont modifiés dans le répertoire bin
    de l'application Web ou l'un des
    sous-répertoires de la poubelle

  • un répertoire est créé, renommé ou
    supprimé dans un répertoire d'applications web

  • un fichier ASP.NET (.aspx, .asmx, etc.) est modifié (et donc recompiler)
    plus de 20 fois, un défaut défini dans la configuration de la machine comme un élément
    nommé numRecompilesBeforeAppRestart

  • par des paramètres de divers attributs
    dans le
    élément dans la machine.config, qui affecter le redémarrage/arrêt du processus de travail
    lui-même.Sous Windows
    2003, lorsqu'ils ne sont pas en utilisant l'isolement IIS5
    le mode (qui n'est pas utilisé par défaut), ces éléments sont
    ignorées et les paramètres
    pools d'applications dans le Gestionnaire des services Internet sont utilisés

Je pense que votre approche est bonne, mais maintenant ce que vous voulez vraiment savoir est ce qui cause le redémarrage et si vous devriez être alarmé.

+0

merci pour les suggestions. Je peux assurer qu'aucun des fichiers de configuration n'est en cours de modification, il est donc probable que les paramètres IIS provoquent des redémarrages inattendus. – Bleser

3

Dans IIS 6.0, l'onglet Performances du pool d'applications vous permet d'arrêter le processus de travail IIS après un délai d'inactivité spécifié. Ceci est activé par défaut et est défini sur vingt minutes.

Cela peut être la cause du déclenchement inattendu d'événements application_start.

Questions connexes