2009-03-17 8 views
5

Global.asaxのイベントハンドラを自動的にスタブする方法があるのでしょうか?これまでのところ、私はこれを行う方法の例を見つけることができませんでした。私が利用できる代理人の名前のリストを見つけて、手動で入力する必要があるようです。Global.asaxの自動イベント配線

Intellisenseは、対象について有用な情報を提供していないようです。

答えて

7

ASP.Netランタイムはリフレクションを使用して、 "Application_Start"、 "Session_Start"などの名前のメソッドを動的に検索し、HttpApplicationクラスの対応するイベントにバインドします。 Global.asax.csに名前が "Application_"でイベントの名前が続くメソッドを含めるだけで、HttpApplicationイベントのいずれかに効果的にバインドできます。例えば、EndRequestのイベントを利用するために、あなたのGlobal.asax.csファイルにこれを追加します。

protected void Application_EndRequest(object sender, EventArgs e) 
    { 
     // Your code here 
    } 

はこれがどのように行われるかの有用な情報の束のためのリック・シュトラールからこのBlog Entryを参照してください。

+0

正直に言えば、私のOOPSの概念は、それらのメソッドがoverrideキーワードなしで呼び出されているのを見て、トスに向かいました。反射はゴーストライダーです:-)この偉大な啓発に感謝します。単に超クールです。しかし、私は人々が一般的に反射を介してタイプを検査するのが遅く、ここでパフォーマンスが低下すると言うのだろうと思っていました。また、なぜasp.netチームがHttpApplicationをインスタンス化し、より明白な仮想オーバーライドの代わりにイベントハンドラをフックするために、このルートを選択したのですか?これは私が今調べたいものです。 – RBT

0

イベントハンドラを「自動的にスタブする」とはどういう意味ですか? 「オーバーライド」と入力してIntellisenseにイベントハンドラが利用可能であることを伝えるのと同様に?ここで

がavaialble何を示すのリンクですそこではありません恐れては...、しかし:

は、しかし、どこでも任意の決定的な、完全なリストを見つけるように見えることはできません: - (

マルク・

+0

右...オーバーライドまたは[プロパティ]タブでは、通常、イベントボタンを選択してダブルクリックしてデリゲートをイベントに自動接続します。そのようなものやインテリセンスオプション。 どのようなメソッドをフックできるかを記述したリストがあります。しかし、ありがとう。 – Boydski

2

HttpApplicationクラスのすべてのイベントは、グローバルでのハンドラを持つことができます。アサックス

0

HttpApplication.Initメソッドは、すべてのモジュールオブジェクトが作成され、それぞれのInitメソッドが呼び出された後に呼び出されます。これは、イベントハンドラの設定、HttpModuleのインスタンス変数の初期化、 wireupイベントハンドラをホスティングHttpApplicationに送信します。

asaxクラスのメソッド名は、Web.configファイル内のモジュールを登録するために使用されるname属性の値と、アンダースコアと、イベント名である を連結したものです。

関連する問題