C# 如何为WebHandler请求触发会话启动(Global.asax)事件?
我有一个Webhandler,它可以根据我的asp.net项目中的请求生成一个映像。但是,如果用户直接访问资源,则不会触发Global.asax文件中的会话启动事件。但是在我的项目中,我需要触发会话开始事件。我怎样才能做到这一点C# 如何为WebHandler请求触发会话启动(Global.asax)事件?,c#,asp.net,C#,Asp.net,我有一个Webhandler,它可以根据我的asp.net项目中的请求生成一个映像。但是,如果用户直接访问资源,则不会触发Global.asax文件中的会话启动事件。但是在我的项目中,我需要触发会话开始事件。我怎样才能做到这一点 void Session_Start(object sender, EventArgs e) { Session["Test"] = 1; } 每当服务器端处理程序试图读取或写入会话时,就会触发会话启动事件。您可以尝试使用标记接口
void Session_Start(object sender, EventArgs e)
{
Session["Test"] = 1;
}
每当服务器端处理程序试图读取或写入会话时,就会触发会话启动事件。您可以尝试使用标记接口装饰处理程序:
public class MyHandler: IHttpHandler, IRequiresSessionState
{
...
}
您始终可以创建一个
会话\u 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()代码>使用System.Web.SessionState
。对吧?让我再问你一件事?有时会问另一个问题?如果我想在WebHandler中使用会话,但不想触发会话启动怎么办?这是绝对不可能的。如果未触发会话启动事件,则无法使用任何会话。这正是此事件的设计目的:在任何服务器端处理程序尝试访问会话之前触发。我只想为访问我的网站的用户加载图像。我想防止图像在其他网站上共享。不是为了保护我的应用程序,而是为了避免不必要的资源占用+1@SubinJacob,您应该仔细考虑您的需求,并单独提出问题。。。看起来“在CDN上放置图像”是避免服务器上任何资源使用的一个很好的选择…我可以在WebHandler中使用会话而不触发会话启动事件吗?