2011-01-13 31 views
8

Global.asax uygulamasının PostAuthenticateRequest olayını nasıl kullanabilirim? this tutorial'u izliyorum ve PostAuthenticateRequest olayını kullanmam gerektiğinden bahseder. Global.asax olayını eklediğimde iki dosya oluşturdu, işaretleme ve kod arkasındaki dosya. İşte dosyanınGlobal.asax PostAuthenticateRequest olay bağlama nasıl gerçekleşir?

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) 
     {  
     } 
    } 
} 

arkasında kod-içeriği Şimdi başarıyla denir

protected void Application_OnPostAuthenticateRequest(object sender, EventArgs e) 

yazarken olduğunu. Şimdi bu PostAuthenticateRequest bu Application_OnPostAuthenticateRequest yöntemine nasıl bağlı olduğunu bilmek istiyorum? Yöntemi nasıl değiştirebilirim?

cevap

14

Sihirli ..., WireupOtomatik Etkinlik adında bir mekanizma, kendi kod arkasında ve yöntemde

Page_Load(object sender, EventArgs e) 
{ 
} 

yazabilir aynı nedenle otomatik sayfa yüklendiğinde çağrılır.

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

:

alır veya ASP.NET sayfaları için etkinlikleri otomatik olay işleme fonksiyonlarına bağlı olup olmadığını gösteren bir değeri ayarlar. AutoEventWireuptrue olduğunda

, işleyicileri otomatik olarak isim ve imza dayalı çalışma zamanında olaylara bağlıdır. Her olay için, ASP.NET Page_Load() veya Page_Init() gibi Page_eventname() modeline göre adlandırılan bir yöntemi arar. ASP.NET ilk olarak, normal olay işleyicisi imzasına sahip bir aşırı yükleme arar (yani, Object ve EventArgs parametrelerini belirtir). Bu imzaya sahip bir olay işleyicisi bulunamazsa, ASP.NET parametresi olmayan bir aşırı yük arar. Daha fazla ayrıntı this answer. Eğer bunu isteseydi

açıkça bunu IntelliSense görünmüyor çünkü ben bir saat boşa ve ben nasılsa olaya abone olabileceğini düşündüm

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

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

yerine aşağıdaki yazardı. Olayı nasıl uygulayacağınızı sormak üzereydim ama sonra bir deneyelim ve herhangi bir hata ve hata alıp alamayacağımı düşünelim dedim! o çalıştı :) Her neyse – Tux

+6

dikkat edin yani. Application_Start veya Session_Start, SADECE Auto Event Wireup (Otomatik Olay Tutma) mekanizması aracılığıyla ele alınabilir, HttpApplication sınıfında bunlara abone olabilecek açık bir etkinlik yoktur. –

+0

Bana bunu bildirdiğiniz için teşekkür ederiz. – Tux

İlgili konular