Dou*_*ram 5 c# asp.net session
我有一个解决方案,其中包括2个项目和2个通过引用调用的类文件.在我的项目之一,我在Global.asax中在从数据库加载一些变量,并将其设置为会话变量在session_start块的一些代码.如果我在Global.asax中设置一个断点,我可以验证变量实际上是否正确设置.
当我在任何代码隐藏模块或项目中的类中引用类中的会话变量时,它们就在那里.但是如果我在其中一个通过引用调用的类(实质上是共享类)中引用它们,则Session变量都为null.
我正在使用HttpContext.Current.Session ["varName"]来访问类中的变量,这是标准的.
还有什么我需要考虑才能访问这些会话变量吗?它可能是命名空间问题吗?
之前我遇到过同样的问题,我一直在丢失会话变量(尽管与您的上下文不在同一个上下文中)。我发现这些文章对我的问题很有帮助:ASP.NET案例研究:丢失的会话变量和appdomain回收以及PRB:使用ASP.NET InProc会话状态模式时,会话数据丢失。希望它也能对您有所帮助。干杯!
您是否在代码中的任何位置调用 Session.Abandon() ?我在 Web 应用程序启动时执行此操作,以确保我从“新鲜”会话开始。事实证明,即使在“放弃”之后存储的任何 Session 变量也会被删除(即使通过其他方式强制 SessionID 保持不变,例如使用 Server.Transfer(Url, true) 而不是 Response.Redirect)。回发。
即我可以跟踪我的应用程序,观察所有会话变量是否正确设置,然后调用任何事件处理程序(AutoPostBack =“True”的任何内容,例如 UpdatePanel 上的复选框或按钮)时,BAM,我有相同的 SessionID,但会话变量为零。
删除对 Session.Abandon() 的先发制人调用立即解决了我的问题。
杰夫
| 归档时间: |
|
| 查看次数: |
26326 次 |
| 最近记录: |