2010-12-30 23 views
5

Se si dichiara una variabile static in Global.asax, quindi come accedervi all'interno di una pagina ASP.NET?Come accedere ai membri statici di Global.asax?

<script runat=server"> 

    public static object myObject = new MyClass(); 

    // Application_Start() and other stuff goes here. 

</script> 

E, questa è una buona idea per la memorizzazione di un oggetto globale (stessa istanza per tutte le richieste)?

+0

Buona domanda, presupponendo che si reinizializzi sempre l'oggetto in Application_Start(). –

+0

La variabile 'static' non può essere trovata anche se' asp.net' consente la dichiarazione. Se conosciamo la codifica all'interno delle mappe 'Global.asax' su quale classe, possiamo accedere a tale variabile. – Xaqron

+0

Sembra quasi che tu stia girando tutto questo indietro, Xaqron. Forse se pubblichi una domanda "immagine più grande" otterrai una risposta più soddisfacente. – Greg

risposta

4

myObject dovrebbe essere disponibile per tutti i metodi di global.asax e all'interno di pagine ASP.NET utilizzando

Global.myObject 
+0

Lo userò all'interno di un 'HttpHandler', quindi ho accesso a' HttpContext' ma non è lì. – Xaqron

+0

puoi farlo, ma solo in modo leggermente diverso per i gestori. vedi questa risposta http://bit.ly/eT4E71 – phillip

+1

@philip: per favore non usare gli abbreviazioni URL su StackOverflow. Utilizza l'URL completo o usa '[Titolo URL] (http://www.example.com/address)'. – Brian

0

Personalmente, vorrei vivamente di votare contro l'uso di variabili globali in ASP.NET. Ho avuto esperienze piuttosto brutte alcuni anni fa.

È necessario sincronizzare l'accesso ai membri dell'istanza globale MyClass per assicurarsi che funzioni correttamente in uno scenario multi-thread (che è probabile/obbligatorio se arrivano più richieste).

C'è anche il ApplicationState che è possibile utilizzare, according to Microsoft, you shouldn't.

+1

se è immutabile potrebbe essere giusto usarlo – Omu

0

globale non è definita che funziona per me:

ASP.global_asax esempio

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

Problemi correlati