2012-02-08 14 views
5

Czytam dwie wartości z web.config w Application_Start mojego Global.asax.cs. Wartości łańcuchowe z pliku web.config są przypisywane do ich właściwości publicznych, również zdefiniowane w pliku Global.asax.cs.Jak uzyskać dostęp do właściwości utworzonej w pliku global.asax.cs?

Jak uzyskać dostęp do właściwości w pliku global.asax.cs z innej klasy, metody i przestrzeni nazw?

Aktualizacja # 1 Jest to bardziej skomplikowane, niż myślałem (a może po prostu komplikuję). Klasa, w której chcę odwoływać się do tych właściwości w bibliotece klasycznej i nie mam dostępu do httpcontext (lub nie wiem, jak uzyskać do niej dostęp).

Odpowiedz

1

Jeśli Global.asax.cs nie manipulować wartości, a następnie po prostu odczytać wartości z pliku web.config jak już robić w Global.asax.cs.

Jeśli jednak plik Global.asax.cs manipuluje wartościami, można zapisać wartości w obiekcie "Aplikacja".

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

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

    } 

Wreszcie, można oznaczyć właściwość chcesz wystawiać z globalnym statyczne.

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

     Abc = "123"; 

    } 
+0

Myślałem o przeczytaniu wartości bezpośrednio z pliku konfiguracyjnego, tak jak to robię w pliku global.asax.cs. Problem polega na tym, że będzie to czytane wiele, wiele razy i, dla mnie, bardziej sensowne będzie czytanie go raz, przechowywanie w zmiennej i odwoływanie się do zmiennej w razie potrzeby. Używamy EF i ten program obsługi zdarzeń (gdzie wartość jest potrzebna) zostaje wystrzelony dużo, więc byłoby dużo czytania z web.config. – Joe

+0

W tym przypadku (dużo czytania) należy użyć buforowania. –

5

Rzuć bieżącą instancję aplikacji na swój typ Global i uzyskaj dostęp do jej właściwości.

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

@Greg_B Byłoby rzeczywiście być HttpContext.Current.ApplicationInstance jak HttpContext.Current.Application jest HttpApplicationState nie object obiekt HttpApplication. – rism

Powiązane problemy