【问题标题】:Session Check in global.asax messing with filehandler.ashxglobal.asax 中的会话检查与 filehandler.ashx 混淆
【发布时间】:2013-02-24 21:13:13
【问题描述】:

我最近将我所有的会话检查集成到 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 哇,刚看到这个,今晚我会测试它并提供更新.. 仍在寻找解决方案,谢谢。
    • 回顾一下,经过更多研究后,我实际上实施了 IReadOnlySessionState 但这也有效,肯定让我走上了正确的轨道,并且在 global.asax 中一切正常。非常感谢:)
    猜你喜欢
    • 2011-06-05
    • 2011-03-04
    • 2015-01-17
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2013-04-12
    相关资源
    最近更新 更多