Ich habe eine Webanwendung, die derzeit den aktuellen HttpContext verwendet, um einen LINQ-Datenkontext zu speichern. Der Kontext wird für die aktuelle Anforderung besteht, auf einer Basis pro Benutzer, pro Rick Strahl's blog:Serverseitiges Äquivalent von 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
}
Allerdings habe ich einige Skripte, die aus der Datei global.asax ausführen, dass nicht einen Httpcontext verfügen. Der HttpContext.Current ist NULL, weil der Server derjenige ist, der die "Anfrage" macht.
Gibt es ein äquivalentes Objekt, das ich verwenden kann, um den Datenkontext zu speichern? Also muss ich mir keine Gedanken darüber machen, sie neu zu erstellen und Objekte anzuhängen/abzutrennen? Ich möchte nur den Kontext für die Lebensdauer meiner Prozesse beibehalten.
AKTUALISIERT:
ich derzeit versuche in meiner DAL Helfer Klasse eine statische Variable zu verwenden. Beim ersten Aufruf einer der Methoden in der Klasse wird der DataContext instanziiert und in der statischen Variablen gespeichert. Am Ende meines Prozesses rufe ich eine andere Methode auf, die Dispose für den DataContext aufruft und die statische Variable auf NULL setzt.
In welchen Ereignissen laufen Ihre Skripte? Ich nehme Session_Start und End an? – JoshBerke
Ich habe einige Timer, die regelmäßig ausgeführt werden. Sie werden während des Application_Start-Ereignisses erstellt. Sie laufen von Zeit zu Zeit, überprüfen die Datenbank nach Dingen und schießen einige E-Mails ab. –
Bitte klären Sie - Sie haben eine Methode, die aktuellen Kontext zurückgibt (neue erstellen, wenn es nicht existiert). Und Sie möchten, dass diese Methode sowohl mit HttpContext verfügbar ist als auch ohne sie (im Timer-Callback). Recht? – XOR