ASP.NET 会话对象被设置为空。

4

我在我的asp.net应用程序中有一个Session对象,我将其设置为userID值。该Session对象在global.asax中被实例化。当用户登录并进行身份验证时,在button_click事件上设置该值。

然而,在我的应用程序中的某个地方,Session被设置为空。如何确定Session对象在哪里和如何被设置为空?


你能发布一下 global.asax 中的代码吗?通常情况下,不需要实例化 session。 - Davin Tryon
2个回答

3

在您的项目中全局搜索会话变量。在所有相关行上设置断点,然后仔细地逐步执行应用程序。我两天前也遇到了同样的错误。花了四个小时逐步执行80多页文档才找到问题所在。祝你好运。


1
可能发生这种情况的原因有几个:
  • 您是否在Page_Load()中修改了变量?
  • 您的浏览器是否返回会话cookie?(您可以使用Fiddler进行验证)

根据我的经验,以上方法几乎肯定可以解决这种问题。


不是在page_load事件中。我将其放在global.asax的session_start事件中,然后在button_click事件中读取或写入会话值。 - DNR
还要确保会话ID在session_start创建变量时与在单击事件中尝试检索它时不会更改。 - Jeff Siver
好的,我会仔细检查一下你在 global.asax 里面的代码,确保它不会在每个请求中运行。 - m.edmondson
@m.edmondson 我已验证 global.asax 这一行仅在我启动应用程序时被调用。 - DNR
@JeffSiver 我确定会话 ID 没有改变。 - DNR
你尝试启用跟踪(http://msdn.microsoft.com/en-us/library/0x5wc973.aspx)并查看会话信息有没有任何异常吗? - Jeff Siver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接