2012-08-13 74 views
1

我想在一些页面中检查会话。为此,我在web.config中添加了我想要检查的页面名称,作为appsetting键。 我想使用httpHandler在发现会话为空或其他事件后触发事件。可以举报事件吗?

如果我创建httpHandler作为一个dll(另一个项目)并添加到一个网站,处理程序可以触发一个事件和网站在网页中捕获它?

回答

0

你可以做的是这样的:

你的HttpHandler把一个值HttpContext.Current.Items集合中告诉如果有会话与否。喜欢的东西

HttpContext.Current.Items.Add("SessionWasThere") = true; 

您创建检查在Page_Load事件价值,提出了一个新的事件,告诉这样一个BasePage的:

public abstract class BasePage : Page { 
    public event EventHandler NoSession; 

    protected override void OnLoad(EventArgs e){ 
     var sessionWasThere = (bool)HttpContext.Current.Items.Add("SessionWasThere"); 
     if(!sessionWasThere && NoSession != null) 
      NoSession(this, EventArgs.Empty); 
    } 
} 

在您的网页,你suscribe该事件:

public class MyPage : BasePage{ 

    protected override void OnInit(){ 
     NoSession += Page_NoSession; 
    } 

    private void Page_NoSession(object sender, EventArgs e) { 
     //... 
    } 
} 
+0

网页由页面处理程序处理。他可以在'Application_PostAcquireRequestState'中使用'HttpModule'做一些事情。否则,使用自定义事件的自定义页面类的建议听起来是可行的。 – user1429080 2012-08-14 09:05:21