会话检查global.asax搞乱filehandler.ashx

时间:2013-02-24 21:13:14

标签: c# asp.net session global-asax

我最近将所有会话检查集成到了global.asax中,但是当我的页面调用我的filehandler.ashx来获取图像时,我已经将它放在那里,但我一直在为会话提供空引用错误(但是只有当它称之为。)

如果我把try / catch放在一边,图像会加载,但显然这不是一个好的解决方案。

 void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        try
        {
            HttpContext context = HttpContext.Current;
            if (context.Session["tid"] == null)  //Null Reference here
            {

理想情况下,我正在寻找在回发或首次加载时触发的事件,而不会使用文件处理程序。我想如果我不能,我可以像以前一样把它放在master_page init中(这是不好的做法吗?),因为这似乎工作正常。我只是认为global.asax是一个更简洁的解决方案。

关于下一步该尝试的任何想法?

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

Application_AcquireRequestState

Application_PostAcquireRequestState

Application_PreRequestHandlerExecute

Application_PreSendRequestContent

1 个答案:

答案 0 :(得分:4)

ASHX要求明确继承会话状态:

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