webpart context.session为null

时间:2010-03-25 18:05:50

标签: c# asp.net session null httpcontext

我一直在使用会话数组为我的webpart存储状态变量...所以我有这样的属性:

    public INode RootNode
    {
        get
        {
            return this.Context.Session["RootNode"] as INode;
        }
        set
        {
            this.Context.Session["RootNode"] = value as object;
        }
    }

这通常可行。我发现有时,context.session变量将为null。

我想知道导致会话首先为空的条件是什么,并且当发生这种情况时,最好的方法是保持我的对象?我可以将新的HttpSessionState对象分配给上下文,还是搞砸了?


编辑:好的,所以不只是会话是空的......整个上下文搞砸了。当webpart进入init时,上下文很好......但当它到达dropbox selectedindexchange postback事件时(dropbox包含用于设置rootnode变量的节点id),上下文主要包含null属性。

同样,只有在选择了某些ID时才会发生这种情况。这看起来更像是某种奇怪的错误,而不是我理解会话的问题。

2 个答案:

答案 0 :(得分:0)

System.Web.HttpContext.Current.Session

但是,上下文并不依赖于班级。它取决于正在使用的页面/处理程序的上下文。

-Theo

答案 1 :(得分:0)

我不知道这是什么类型的文件,但我的.ashx文件有类似的问题。解决方案是处理程序必须实现IReadOnlySessionState(用于只读访问)或IRequiresSessionState(用于读写访问)。例如:

public class login : IHttpHandler, IRequiresSessionState { ... }

这些接口不需要任何其他代码,但可以作为框架的标记。

希望这会有所帮助。

乔纳森