我有一个Webhandler,它可以根据请求在我的asp.net项目中生成一个图像。但是如果用户直接访问资源,它将不会触发Global.asax文件中的会话启动事件。但在我的项目中,我需要触发会话开始事件。我怎样才能做到这一点?如何触发WebHandler请求的会话开始(Global.asax)事件?
void Session_Start(object sender, EventArgs e)
{
Session["Test"] = 1;
}
我有一个Webhandler,它可以根据请求在我的asp.net项目中生成一个图像。但是如果用户直接访问资源,它将不会触发Global.asax文件中的会话启动事件。但在我的项目中,我需要触发会话开始事件。我怎样才能做到这一点?如何触发WebHandler请求的会话开始(Global.asax)事件?
void Session_Start(object sender, EventArgs e)
{
Session["Test"] = 1;
}
的Session_Start
事件trigerred每当一些服务器端的处理程序试图读取或写入会话。你可以尝试用IRequiresSessionState
标记接口装饰你的处理程序:
public class MyHandler: IHttpHandler, IRequiresSessionState
{
...
}
你总是可以让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();
我可以在不触发会话启动事件的情况下使用WebHandler中的会话吗? – 2013-04-22 07:58:30
使用'System.Web.SessionState'。对? – 2013-04-22 06:13:55
是的,正如文档中所示。 – 2013-04-22 06:14:22
让我再问你一件事吗?有时候另一个问题如果我想在WebHandler中使用会话但不想触发会话开始? – 2013-04-22 06:16:18