2012-02-08 22 views
5

Estoy leyendo dos valores de web.config en el Application_Start de mi Global.asax.cs. Los valores de cadena de web.config se asignan a sus propiedades públicas, también definidas en Global.asax.cs.¿Cómo accedo a una propiedad creada en global.asax.cs?

¿Cómo accedo a las propiedades en el archivo global.asax.cs de otra clase, método y espacio de nombres?

Actualización # 1 Esto es más complicado de lo que pensaba (o tal vez lo estoy complicando). La clase en la que quiero hacer referencia a estas propiedades en una simple biblioteca de clases y no tengo acceso a httpcontext (o no sé cómo acceder a ella).

Respuesta

1

Si el Global.asax.cs no manipula los valores, entonces simplemente leer los valores del web.config como ya se hace en global.asax.cs.

Sin embargo, si Global.asax.cs manipula los valores, puede escribir los valores en el objeto "Aplicación".

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 

     Application.Add("Foo", "Bar"); 

    } 

Por último, puede marcar como estática la propiedad que desea exponer de Global.

public static string Abc { get; set; } 
    void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 

     Abc = "123"; 

    } 
+0

Pensé en leer los valores directamente desde el archivo de configuración, como hago en global.asax.cs. El problema es que esto se leería muchas, muchas veces y, para mí, tiene más sentido leerlo una vez, almacenarlo en una variable y hacer referencia a la variable cuando sea necesario. Estamos utilizando EF y este manejador de eventos (donde se necesita el valor) se dispara mucho, por lo que habría una gran cantidad de lectura desde el web.config. – Joe

+0

En este caso (una gran cantidad de lectura) es usar el almacenamiento en caché. –

5

Transmita la instancia de aplicación actual a su tipo Global y acceda a las propiedades allí.

var app = (Your.App.Namespace.Global)HttpContext.Current.ApplicationInstance; 
var x = app.YourProperty; 
+2

@Greg_B En realidad, sería HttpContext.Current.ApplicationInstance como HttpContext.Current.Application es un objeto HttpApplicationState no un objeto HttpApplication. – rism

Cuestiones relacionadas