如何为WebHandler请求触发Session Start(Global.asax)事件?

时间:2013-04-22 06:08:00

标签: c# asp.net

我有一个Webhandler,可以在我的asp.net项目中根据请求生成图像。但是,如果用户直接访问资源,它将不会触发Global.asax文件中的会话启动事件。但在我的项目中,我需要触发会话启动事件。我怎样才能做到这一点?

 void Session_Start(object sender, EventArgs e) 
    {
        Session["Test"] = 1;

    }

2 个答案:

答案 0 :(得分:7)

只要某个服务器端处理程序尝试读取或写入会话,就会触发Session_Start事件。您可以尝试使用IRequiresSessionState标记界面来装饰处理程序:

public class MyHandler: IHttpHandler, IRequiresSessionState
{
    ...
}

答案 1 :(得分:3)

您始终可以创建Session_Start的方法并将其命名为

namespace WebFormsApplication1
{
    public class Global : HttpApplication
    {
        void Session_Start(object sender, EventArgs e) 
        {
            Global.StartSession();
        }
    }

    public static class Global 
    {
        public static void StartSession() {

            Session["Test"] = 1;
        }
    }
}

在您的处理程序中,只需致电Global.StartSession();

即可