2010-06-09 12 views
8

stelle ich verschiedene globale Parameter in Global.asax, als solche nach oben:Zugriff HttpApplication.Application Variablen aus einer Klasse

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

Ich habe kein Problem beim Zugriff auf diese Variablen bilden .ascx.cs oder aspx.cs Datei - dh Dateien, die Teil des Web-Inhalts sind. Ich kann jedoch anscheinend nicht von grundlegenden Klassenobjekten (dh Standalone-CS-Dateien) auf "Anwendung" zugreifen. Ich habe irgendwo gelesen, eine leichten Variationen in CS-Dateien zu verwenden, wie folgt, aber es kommt immer eine Ausnahme auslöst, wenn im Einsatz:

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

Ist Ihre Verwendung von einer Nicht-Aspx-Klasse im Zusammenhang mit Asp.Net? –

Antwort

6

Zwar trifft es zu, dass Sie HttpContext.Current aus jeder Klasse verwenden, können Sie immer noch verarbeiten müssen eine HTTP-Anfrage beim Aufruf - sonst gibt es keinen aktuellen Kontext. Ich nehme an, dass das der Grund ist, warum Sie eine Ausnahme bekommen, aber das Veröffentlichen der tatsächlichen Ausnahme würde helfen, die Angelegenheit zu klären.

+1

Ich denke, Sie haben Recht ... Was ist der beste Weg, Variablen zwischen allen Teilen meiner App zu teilen? Ich habe nur ein paar kleinere Irritationen in .cs-Dateien, die einen Web-Content (wie Server.MapPath, oben) benötigen. – Testing123

+1

Das ist eine ganz eigene Frage und du solltest sie wahrscheinlich separat veröffentlichen mit weiteren Details über die App und was du teilen möchtest. – EMP

3

, um Ihre Variable über die App zu teilen, und um von einer eigenständigen Klasse darauf zugreifen zu können, können Sie die statische Variable einer Klasse verwenden, anstatt die Variable HttpApplication zu verwenden.

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

Natürlich mit der Einschränkung, dass es eine Variable sein sollte, die andere gleichzeitige Benutzer des Systems ebenso benötigen. Statische Variablen werden in einer Umgebung mit mehreren Benutzern gemeinsam verwendet. Wenn die Variable aus benutzerspezifischen Gründen geändert wird, ist dies nicht die Vorgehensweise, die Sie verwenden möchten. Kristopher

Verwandte Themen