2010-12-30 17 views
5

Wenn wir eine static Variable in Global.asax dann wie auf eine ASP.NET Seite zugreifen?Zugriff auf statische Mitglieder von Global.asax?

<script runat=server"> 

    public static object myObject = new MyClass(); 

    // Application_Start() and other stuff goes here. 

</script> 

Und das ist eine gute Idee, ein globales Objekt (gleiche Instanz für alle Anforderungen) zum Speichern?

+0

Gute Frage, vorausgesetzt, Sie initialisieren immer das Objekt in Application_Start(). –

+0

'static' Variable kann nicht gefunden werden, obwohl' asp.net' Deklaration erlaubt. Wenn wir wissen, dass das Codieren in 'Global.asax' zu welcher Klasse migriert, können wir auf diese Variable zugreifen. – Xaqron

+0

Es hört sich so an, als würdest du komplett rückwärts gehen, Xaqron. Vielleicht, wenn Sie eine "größeres Bild" -Frage stellen, erhalten Sie eine befriedigendere Antwort. – Greg

Antwort

4

myObject sollte alle Methoden in global.asax und in Ihren ASP.NET-Seiten mit

Global.myObject 
+0

Ich benutze es in einem 'HttpHandler' also habe ich Zugang zu' HttpContext' aber es ist nicht da. – Xaqron

+0

können Sie es aber nur ein wenig anders für Handler tun. Siehe diese Antwort http://bit.ly/eT4E71 – phillip

+1

@philip: Bitte verwenden Sie keine URL shortener auf stackoverflow. Benutze entweder die vollständige URL oder benutze '[Url Title] (http://www.example.com/address)'. – Brian

0

persönlich verfügbar sein, würde ich stark stimmen gegen die globalen Variablen in ASP.NET verwenden. Ich hatte vor einigen Jahren ziemlich schlechte Erfahrungen.

Sie sollten den Zugriff auf die Mitglieder Ihrer globalen MyClass-Instanz synchronisieren, um sicherzustellen, dass sie in einem Multithreading-Szenario ordnungsgemäß funktioniert (was wahrscheinlich ist, wenn mehrere Anfragen eingehen).

Es gibt auch die ApplicationState, die Sie verwenden könnten, according to Microsoft, you shouldn't.

+1

Wenn es unveränderlich ist, könnte es in Ordnung sein, es zu benutzen – Omu

0

Globale nicht definiert, die für mich funktioniert:

ASP.global_asax Beispiel

ASP.global_asax.DefaultModel.GetTable ("Variablen");

Verwandte Themen