可以httphandler发射一个事件吗?

时间:2012-08-13 09:29:36

标签: asp.net ihttphandler

我想在某些页面中查看Session。为此,我将要在web.config中检查的页面名称添加为appsetting键。 我想使用httpHandler在发现会话为空或其他事件后触发事件。

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

1 个答案:

答案 0 :(得分:0)

你可以做的是:

你的HttpHandler在HttpContext.Current.Items集合中放置一个值,告诉你是否有Session。像

这样的东西
HttpContext.Current.Items.Add("SessionWasThere") = true;

您创建了一个BasePage,用于检查Page_Load事件中的值并提出一个新事件,告诉他们:

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

在您的页面中,您可以接受该事件:

public class MyPage : BasePage{

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

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