2009-07-17 5 views
3

J'ai écrit un HttpModule ASP.NET et j'ai une classe d'aide statique qui est utilisée pour charger et stocker les données de configuration pendant la durée de la requête.HttpModule et classe statique, est-ce que plusieurs requêtes partagent les mêmes données statiques?

Étant donné que les constructeurs statiques doivent être sans paramètre, j'ai une méthode SetConfigName statique que j'appelle au début du traitement de HttpRequest.

public static void SetConfigName (string configName) 
    { 
     // load data specific to given configName 
    } 

Il existe également des méthodes Get() statiques qui sont appelées ultérieurement lors du traitement de HttpRequest. Les données de configuration chargées peuvent être différentes pour chaque requête (en fonction des valeurs de l'URL), donc et non veulent d'autres requêtes pour partager les données statiques après avoir appelé SetConfigName.

Donc, la question est, est-ce que plusieurs demandes partagent les mêmes données statiques, ou chaque nouvelle requête obtient-elle une copie séparée de la classe statique? (Et si les données sont partagées, comment l'éviter? Est-ce la seule alternative pour en faire une classe non statique?)

(Soit dit en passant, je ne pas utiliser global.asax.)

Répondre

1

Plusieurs demandes partagent les mêmes données statiques. La seule façon de contourner le problème est de toujours renvoyer des informations basées sur la requête en cours, plutôt que de simplement renvoyer des données statiques sauvegardées. Si ce n'est pas une option, alors oui, vous devez en faire une classe non statique.

3

données statiques est partagé entre les demandes. Pour stocker des données statiques pour une requête, vous devez utiliser HttpContext.Current.Items.

Questions connexes