J'ai une application Web qui utilise actuellement le HttpContext actuel pour stocker un contexte de données LINQ. Le contexte est persisté à la demande actuelle, sur une base par utilisateur, par Rick Strahl's blog:Equivalent côté serveur de HttpContext?
string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString("x")
Thread.CurrentContext.ContextID.ToString();
if (!HttpContext.Current.Items.Contains(ocKey))
{
// Get new Data Context and store it in the HTTP Context
}
Cependant, j'ai quelques scripts qui exécutent à partir du fichier global.asax, que n'ont pas un HttpContext. Le HttpContext.Current est NULL, car le serveur est celui qui effectue la "requête".
Existe-t-il un objet équivalent que je puisse utiliser pour stocker le contexte de données? Donc, je n'ai pas à m'inquiéter de le recréer et d'attacher/détacher des objets? Je veux seulement persister le contexte pour la durée de vie de mes processus.
MISE À JOUR:
Je suis actuellement en train d'utiliser une variable statique dans ma classe d'aide DAL. Lors du premier appel à l'une des méthodes de la classe, DataContext est instancié et stocké dans la variable statique. À la fin de mon processus, j'appelle une autre méthode qui appelle Dispose sur le DataContext et définit la variable statique sur NULL.
Dans quels événements vos scripts s'exécutent-ils? Je suppose que Session_Start et End? – JoshBerke
J'ai quelques timers qui sont créés pour fonctionner périodiquement. Ils sont créés au cours de l'événement Application_Start. Ils courent de temps en temps, vérifiant la base de données pour trouver des choses et renvoyer certains courriels. –
Veuillez clarifier - vous avez une méthode qui retourne le contexte actuel (en créer un nouveau s'il n'existe pas). Et vous voulez que cette même méthode fonctionne à la fois avec HttpContext disponible et sans elle (en rappel de minuterie). Droite? – XOR