C# global.asax中的会话签入与filehandler.ashx冲突

C# global.asax中的会话签入与filehandler.ashx冲突,c#,asp.net,session,global-asax,C#,Asp.net,Session,Global Asax,我最近将我的所有会话检查集成到global.asax中,它工作得很好,但由于我在页面调用my filehandler.ashx获取图像时将其放在了global.asax中,因此会话中不断出现空引用错误(但仅当它调用时) 如果我尝试/抓住它,图像将加载,但显然这不是一个好的解决方案 void Application_PostAcquireRequestState(object sender, EventArgs e) { try {

我最近将我的所有会话检查集成到global.asax中,它工作得很好,但由于我在页面调用my filehandler.ashx获取图像时将其放在了global.asax中,因此会话中不断出现空引用错误(但仅当它调用时)

如果我尝试/抓住它,图像将加载,但显然这不是一个好的解决方案

 void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        try
        {
            HttpContext context = HttpContext.Current;
            if (context.Session["tid"] == null)  //Null Reference here
            {
理想情况下,我要查找在回发或首次加载时触发的事件,这些事件与filehandler无关。我想如果我做不到,我可以像以前一样把它放在母版页init中(这是一个糟糕的做法吗?),因为这样看起来效果不错。我只是觉得global.asax会是一个更整洁的解决方案

你有没有想过下一步该做什么

到目前为止我尝试过的事件

Application_AcquireRequestState

Application_PostAcquireRequestState

Application_PreRequestHandlerExecute

Application_PreSendRequestContent

ASHX要求显式继承会话状态:

public class SomeCustomService : IHttpHandler, IRequiresSessionState
{
    // stuff
}

ASHX要求显式继承会话状态:

public class SomeCustomService : IHttpHandler, IRequiresSessionState
{
    // stuff
}

哇,刚刚看到这个,我今晚会测试它,并给出更新。。我仍然在寻找解决方案,谢谢。回过头来看,经过更多的研究,我实际上已经开始实施iRadonlySessionState,但这也很有效,确实让我走上了正确的轨道,在global.asax中一切都很顺利。非常感谢:)哇,刚刚看了这个,我今晚会测试它,并给出更新。。我仍然在寻找解决方案,谢谢。回过头来看,经过更多的研究,我实际上已经开始实施iRadonlySessionState,但这也很有效,确实让我走上了正确的轨道,在global.asax中一切都很顺利。非常感谢:)