2010-06-09 7 views
8

skonfigurować różne parametry globalne w Global.asax, jako takich:Dostęp do zmiennych HttpApplication.Application z klasy

Application["PagePolicies"] = "~/Lab/Policies.aspx"; 
Application["PageShare"] = "/Share.aspx"; 
Application["FileSearchQueries"] = Server.MapPath("~/Resources/SearchQueries.xml"); 
... 

mam żadnego problemu z dostępem zmienne te tworzą .ascx.cs lub .aspx.cs plik - tj. pliki będące częścią treści WWW. Jednak nie mogę uzyskać dostępu do "Aplikacji" z podstawowych obiektów klasy (tj. Samodzielnych plików .cs). Czytałem gdzieś używać nieznaczne różnice w plikach .cs, w następujący sposób, ale zawsze przychodzi zgłasza wyjątek podczas użytkowania:

String file = (String)System.Web.HttpContext.Current.Application["FileSearchQueries"]; 
+1

Czy korzystasz z klasy innej niż aspx w kontekście Asp.Net? –

Odpowiedz

6

Choć to prawda, że ​​można użyć HttpContext.Current z dowolnej klasy należy nadal realizować żądanie HTTP podczas wywoływania - w przeciwnym razie nie ma bieżącego kontekstu. Zakładam, że to jest powód, dla którego robisz wyjątek, ale opublikowanie faktycznego wyjątku pomogłoby wyjaśnić sprawę.

+1

Myślę, że masz rację ... Jaki jest najlepszy sposób udostępniania zmiennych między wszystkimi częściami mojej aplikacji? Mam tylko kilka drobnych czynników drażniących w plikach .cs, które wymagają zawartości internetowej (takiej jak Server.MapPath, powyżej). – Testing123

+1

To jest osobne pytanie i prawdopodobnie powinieneś zamieścić go osobno, podając więcej szczegółów na temat aplikacji i tego, co chcesz udostępnić. – EMP

3

udostępnić zmienną w aplikacji, a aby uzyskać do niej dostęp z poziomu autonomicznego, można użyć zmiennej statycznej klasy zamiast zmiennej HttpApplication.

public MyClass{ 
public static int sharedVar; 
} 

//and than you can write somwhere in app: 
MyClass.sharedVar= 1; 

//and in another location: 
int localVar = MyClass.sharedVar; 
+0

Oczywiście, z zastrzeżeniem, że powinna to być zmienna, której potrzebują również inni współbieżni użytkownicy systemu. Zmienne statyczne są udostępniane w środowisku wielu użytkowników. Jeśli zmienna zostanie zmieniona z powodów specyficznych dla użytkownika, nie jest to podejście, które chcesz zastosować. Kristopher

Powiązane problemy