2010-06-09 12 views
8

que configurar diversos parámetros globales en Global.asax, tales como:accede a variables HttpApplication.Application de una clase

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

no tengo ningún problema para acceder a estas variables forman .ascx.cs o .aspx.cs archivo - es decir. archivos que son parte del contenido web. Sin embargo, parece que no puedo acceder a 'Aplicación' desde objetos de clase básicos (es decir, archivos .cs independientes). He leído en alguna de utilizar un ligeras variaciones en los archivos .cs, de la siguiente manera, pero siempre viene produce una excepción cuando está en uso:

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

¿Es su uso de una clase no aspx en el contexto de Asp.Net? –

Respuesta

6

Si bien es cierto que se puede utilizar HttpContext.Current de cualquier clase que todavía debe estar procesando una solicitud HTTP cuando la llamas; de lo contrario, no hay un contexto actual. Supongo que esa es la razón por la que recibes una excepción, pero publicar la excepción real ayudaría a aclarar las cosas.

+1

Creo que estás en lo cierto ... ¿Cuál es la mejor forma de compartir variables y luego entre todas las partes de mi aplicación? Solo tengo algunas irritantes menores en archivos .cs que necesitan un contenido web (como Server.MapPath, arriba). – Testing123

+1

Esa es una pregunta aparte y probablemente debería publicarla por separado con más detalles sobre la aplicación y lo que desea compartir. – EMP

3

para compartir su variable en la aplicación, y para poder acceder a ella desde la clase independiente, puede usar la variable estática de una clase, en lugar de usar la variable 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

Por supuesto, con la advertencia de que debería ser una variable que también necesitan otros usuarios concurrentes del sistema. Las variables estáticas se comparten en un entorno multiusuario. Si la variable cambiará por razones específicas del usuario, este no es el enfoque que querrá tomar. Kristopher

Cuestiones relacionadas