C# 如何为WebHandler请求触发会话启动(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; } 每当服务器端处理程序试图读取或写入会话时,就会触发会话启动事件。您可以尝试使用标记接口

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

 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中使用会话而不触发会话启动事件吗?