【发布时间】:2013-11-08 17:51:02
【问题描述】:
可以这样设置和读取当前会话中的变量
String Myvar =(string) System.Web.HttpContext.Current.Session[“MyVariable”]
设置
System.Web.HttpContext.Current.Session[“MyVariable”] = “NewValue”
我两者都做不到,我从 System.Web.HttpContext.Current.Session 得到一个System.NullReferenceException: Object reference not set to an instance of an object.。
在我的 web.config 我有
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20">
</sessionState>
我已经阅读了十几篇关于IHttpHandler 和IRequiresSessionState 接口的必要性的文章。我认为问题可能是因为我在Page_PreInit 中请求此信息。我在一篇堆栈溢出文章中找到了 solution,但我似乎没有正确使用它来真正实现这一目标。
我不确定我错过了什么。提前致谢。
【问题讨论】:
-
如果您将该代码移到 Page_Load 事件中,它会起作用吗?为什么在 PreInit 中需要这个?
-
确保您的 ASP .Net State 服务已启动。即使您将代码放在 Page_PreInit 中,它也应该可以工作。你能提供更多信息吗?
-
还有一件事,您首先使用的是哪条线路。如果您没有设置 session["MyVariable"] 并且您尝试转换为(字符串)。它会给你 NULL 参考错误。所以尝试在强制转换之前放置 NULL 检查条件
-
我正在交换母版页 - 在 PreInit 上是我知道如何做到这一点的唯一地方。
标签: c# asp.net session-state