2010-03-04 4 views
3

J'ai la ligne de code suivante appelé très souvent:Prenez-vous un disque "hit" chaque fois que vous récupérez une valeur web.config?

var configValue = System.Configuration.ConfigurationManager.AppSettings["ConfigValueKey"]; 

Est-ce que je prends un coup de disque pour ASP.Net pour récupérer l'élément de la web.config, ou est-il assez intelligent pour mettre en cache la valeur mémoire et seulement actualiser le cache lorsque le web.config change?

+2

Si vous souhaitez vous vérifier vous-même, téléchargez ProcessMonitor à partir de Technet ... –

Répondre

5

Les données de configuration sont conservées en mémoire. Toutefois, ASP.NET surveillera les modifications dans web.config et recyclera le domaine d'application si le fichier est modifié.

Entre autres choses, toutes les sessions utilisateurs seront perdues, c'est pourquoi il n'est pas bon de toucher le web.config pendant que l'application est en cours d'exécution.

+5

Les données de session sont perdues uniquement si vous utilisez une session en cours. Si vous utilisez un serveur de session ou des sessions SQL, vous ne devriez pas avoir ce problème. –

+0

@Daniel: Juste pour ajouter: Le recyclage de l'application n'est pas seulement déclenché par un changement dans le fichier de configuration. Toute modification du fichier existant ou suppression d'un fichier dans l'application le provoquera également. Vous pouvez voir d'autres scénarios ici: http://www.geekays.net/post/ASPNET-webdomain-recycle-on-subfolder-changes.aspx – Kangkan

7

Il est assez intelligent pour mettre en cache tous les attributs.

Questions connexes