2011-01-13 19 views
8

どうすれば使用できますか?PostAuthenticateRequest Global.asaxのイベントですか?私はthis tutorialをフォローしており、PostAuthenticateRequestイベントを使用しなければならないことに言及しています。 Global.asaxイベントを追加すると、マークアップとコードビハインドファイルの2つのファイルが作成されました。ここでは、コードビハインドファイルGlobal.asax PostAuthenticateRequestイベントバインディングはどのように行われますか?

using System; 
using System.Web; 
using System.Web.Security; 
using System.Web.SessionState; 

namespace authentication 
{ 
    public class Global : System.Web.HttpApplication 
    {  
     protected void Application_Start(object sender, EventArgs e) 
     {  
     } 

     protected void Session_Start(object sender, EventArgs e) 
     {  
     } 

     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
     } 

     protected void Application_AuthenticateRequest(object sender, EventArgs e) 
     {  
     } 

     protected void Application_Error(object sender, EventArgs e) 
     {  
     } 

     protected void Session_End(object sender, EventArgs e) 
     {  
     } 

     protected void Application_End(object sender, EventArgs e) 
     {  
     } 
    } 
} 

今、私は

protected void Application_OnPostAuthenticateRequest(object sender, EventArgs e) 

を入力したときにそれが正常に呼び出されるのコンテンツがあります。今私は、PostAuthenticateRequestがこれにバインドされていることを知りたいですApplication_OnPostAuthenticateRequestメソッド?メソッドを他のメソッドに変更するにはどうすればよいですか?

答えて

14

マジック...、自動イベントWireup、あなたのコードビハインドで

Page_Load(object sender, EventArgs e) 
{ 
} 

を書くことができ、メソッドが自動的にページのロード時に呼び出されるのと同じ理由と呼ばれるメカニズム。

MSDN description for System.Web.Configuration.PagesSection.AutoEventWireup property

は、ASP.NETページのイベントが自動的にイベント処理機能に接続されているかどうかを示す値を取得または設定します。

AutoEventWireuptrueの場合、ハンドラは、名前とシグネチャに基づいて実行時に自動的にイベントにバインドされます。各イベントに対して、ASP.NETはPage_Load()またはPage_Init()のようなパターンPage_eventname()に基づいて名前が付けられたメソッドを検索します。 ASP.NETは、最初に典型的なイベントハンドラシグネチャ(つまり、ObjectEventArgsパラメータを指定する)を持つオーバーロードを探します。このシグネチャを持つイベントハンドラが見つからない場合、ASP.NETはパラメータを持たないオーバーロードを探します。詳細はthis answerです。あなたがそれをやってみたかった場合

は、明示的にあなたはそれがインテリセンスには現れていなかったので、私は時間を無駄にして、私は私が何とかイベントをサブスクライブする必要があるかもしれませんと思っ

public override void Init() 
{ 
    this.PostAuthenticateRequest += 
     new EventHandler(MyOnPostAuthenticateRequestHandler); 
    base.Init(); 
} 

private void MyOnPostAuthenticateRequestHandler(object sender, EventArgs e) 
{ 
} 
+0

代わりに以下の記述し。イベントをどのように実装するのかを尋ねるつもりでしたが、私はそれを試してみて、何かエラーや幻惑があるかどうかを見てみましょう!それは働いた:)とにかくおかげで – Tux

+6

は、注意してください。 Application_StartまたはSession_Startは、Auto Event Wireupメカニズムを介してのみ処理できます。サブスクライブできるHttpApplicationクラスには、明示的なイベントはありません。 –

+0

私にそれを知らせてくれてありがとう。 – Tux

関連する問題