2012-02-08 9 views
5

私はApplication_Startのweb.configから2つの値を私のGlobal.asax.csと読んでいます。 web.configの文字列値は、Global.asax.csで定義されているパブリックプロパティに割り当てられます。global.asax.csで作成されたプロパティにアクセスするにはどうすればよいですか?

他のクラス、メソッド、名前空間からglobal.asax.csファイルのプロパティにアクセスするにはどうすればよいですか?

アップデート#1 これは私が思っていたよりも複雑です(あるいは、私はそれを複雑にしているかもしれません)。プレーンオールクラスのライブラリでこれらのプロパティを参照したいクラスで、httpcontextにアクセスできません(またはアクセス方法がわかりません)。

答えて

1

Global.asax.csが値を操作しない場合は、すでにglobal.asax.csで行うように、単にweb.configファイルから値を読み取ります。

ただし、Global.asax.csが値を操作する場合は、値を "Application"オブジェクトに書き込むことができます。

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

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

    } 

最後に、グローバルから公開するプロパティを静的としてマークすることができます。

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

     Abc = "123"; 

    } 
+0

私はglobal.asax.csと同じように、configファイルから直接値を読み込むことを考えました。問題はこれが何度も何度も読まれてしまうことです。私には、一度読み込んで変数に格納し、必要に応じて変数を参照する方が理にかなっています。私たちはEFを使用していますが、このイベントハンドラ(値が必要な場所)は大量に起動され、web.configからの読み込みが多くなります。 – Joe

+0

この場合(読み込み全体が)、キャッシュを使用することです。 –

5

現在のアプリケーションインスタンスをGlobalタイプにキャストし、そのプロパティにアクセスします。

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

はHttpContext.Current.ApplicationがHttpApplicationStateのHttpApplicationオブジェクトではなくオブジェクトであるとして、それは実際にHttpContext.Current.ApplicationInstanceだろう@Greg_B。 – rism

関連する問題