2009-02-17 19 views
13

Czy mogę zadzwonić pod numer HttpContext.Current z klasy statycznej i metody?HttpContext.Current dostępny w klasach statycznych

Chcę przechowywać wartość dla każdego użytkownika, ale chcę mieć możliwość uzyskania do niej dostępu w sposób statyczny.

np. Czy to zadziała?

public static class StaticClass 
{ 

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

} 

Odpowiedz

13

Tak to jest to jeden ze sposobów, w których pomocne jest, oczywiście gwint, na którym jest nazywany musi być aktualnie przetwarza żądanie, aby to użyteczne.

5

Dlaczego nie spróbujesz?

Tak, to całkiem możliwe (choć niekoniecznie jest dobry projekt), ale należy pamiętać, aby odwołać System.Web.dll w projekcie i sprawdzić HttpContext.Current dla null w przypadku Skończysz uruchomiony w non-ASP.NET środowiska.

5

Tak, jest to metoda statyczna, dzięki czemu można ją wywołać z dowolnego miejsca. Jak mówi Anthony, "aktualny" kontekst zależy od wątku wywołującego, więc musisz upewnić się, że używasz właściwego wątku.

+0

Klasy i właściwości będą wywoływane tylko z poziomu stron internetowych. Zakładam więc, że zawsze otrzymam aktualny kontekst z prawidłowego wątku. Czy to prawda, czy też czegoś brakuje? –

+2

Powinno być w porządku, o ile nie robisz nic z funky (np. Używając wątku na twoich stronach internetowych). –

+0

Fajnie, nie, nie jestem. Pozdrawiam Jon –

Powiązane problemy