2009-02-17 27 views
13

Posso chiamare HttpContext.Current all'interno di una classe statica e Metodo?HttpContext.Corrente accesso in classi statiche

Desidero memorizzare un valore per utente ma voglio poterlo accedere in modo statico.

ad es. Funzionerà?

public static class StaticClass 
{ 

    public static string SomeThing 
    { 
     get { return HttpContext.Current.Items["SomeItem"].ToString(); } 
    } 

} 

risposta

13

Sì questo è un modo in cui è utile, naturalmente il filo su cui è chiamata deve essere attualmente elaborando una richiesta per renderlo utile.

5

Perché non ci provi?

Sì, è perfettamente possibile (anche se non è necessariamente un buon progetto), basta ricordarsi di riferimento System.Web.dll nel progetto e verificare HttpContext.Current per null nel caso in cui si finirà per esecuzione in un ambiente non-ASP.NET.

5

Sì, è un metodo statico in modo da poterlo chiamare da qualsiasi luogo. Come dice Anthony, il contesto "corrente" dipende dal thread chiamante, quindi è necessario assicurarsi di utilizzare il thread corretto.

+0

La classe e le proprietà verranno chiamate solo dalle pagine Web. Quindi presumo che otterrò sempre il contesto attuale dal thread corretto. È giusto o mi manca qualcosa? –

+2

Dovrebbe essere a posto, purché non si stia utilizzando un thread funky (ad esempio utilizzando il threadpool all'interno delle pagine Web). –

+0

Cool, no, non lo sono. Saluti Jon –

Problemi correlati