2010-12-30 5 views
5

static変数をGlobal.asaxに宣言した場合は、ASP.NETページ内でアクセスするにはどうすればよいですか?Global.asaxの静的メンバーにアクセスするには?

<script runat=server"> 

    public static object myObject = new MyClass(); 

    // Application_Start() and other stuff goes here. 

</script> 

グローバルオブジェクト(すべての要求で同じインスタンス)を保存する場合はこれをお勧めしますか?

+0

良い質問ですが、Application_Start()で常にオブジェクトを再初期化すると仮定します。 –

+0

'asp.net'宣言が可能ですが、' static'変数は見つかりません。 'Global.asax'の中のコーディングがクラスにマップされていることがわかったら、その変数にアクセスできます。 – Xaqron

+0

あなたはこれを完全に逆向きにしているような音です.Xaqronたぶん、あなたが「大きな写真」の質問を投稿すれば、より満足のいく答えが得られるでしょう。 – Greg

答えて

0

オブジェクトを「グローバル」オブジェクトとして配置するのではなく、シングルトンとして作成する方がよい場合があります。アプリケーション開始時にインスタンス化し、アプリケーション終了時にインスタンスを破棄します。あなたがウェブファームを横断する必要がない限り、あなたはかなり安全です。

この投稿とそのコメントを参照してください。

http://weblogs.asp.net/jeff/archive/2007/09/21/how-do-you-get-a-true-singleton-in-an-asp-net-app.aspx

4

myObjectというの

Global.myObject 
+0

私は 'HttpHandler'の中でそれを使うつもりですので、' HttpContext'にアクセスできますが、そこにはありません。 – Xaqron

+0

あなたはそれを行うことができますが、ハンドラーのためには少し違います。この回答を参照してくださいhttp://bit.ly/eT4E71 – phillip

+1

@philip:してください使用しないでくださいURL短縮名をstackoverflowします。完全なURLを使用するか、 '[URLタイトル](http://www.example.com/address)'を使用してください。 – Brian

0

個人的に使用してGlobal.asaxの中に、あなたのASP.NETページ内のすべてのメソッドが利用できるようにする必要があり、私は強くASP.NETでグローバル変数を使用して反対票を投じるだろう。私は何年か前にかなり悪い経験をしていました。

MyClassグローバルインスタンスのメンバーへのアクセスを同期して、マルチスレッドシナリオで正しく動作するようにする必要があります(複数のリクエストが入った場合は必須/必須)。

ApplicationStateもあります。according to Microsoft, you shouldn'tです。

+1

不変の場合は、それを使用しても問題ありません – Omu

0

グローバルは、私の作品 が定義されていません。

ASP.global_asax 例

ASP.global_asax.DefaultModel.GetTable( "タグ")。

関連する問題