为什么对象从 IIS7 中的会话中消失?

发布于 2024-10-11 11:03:11 字数 261 浏览 3 评论 0原文

我正在对我的 Web 应用程序(经典模式下的 IIS7)进行一系列调用。前两个调用实例化对象并将它们放置在 Session 对象中。

当我进行第三次调用时,会话丢失了一个对象。我预计会话中有 2 个密钥,但实际上只有 1 个。

这几乎就像创建了多个会话一样。需要注意的一件事是,这种情况经常发生,它不是 100% 可重复的,即有时一切正常。

这些对象相当大,但不是很大(大约 100 个小字符串),因此我似乎不太可能最大化会话大小。我不会在里面放任何其他物体。

I'm making a series of calls to my web application (IIS7 in Classic mode). The first two calls instantiate objects and place them in the Session object.

By the time I make a third call, the session is missing an object. I expect there to be 2 of my keys in Session, but there is only 1.

It's almost as though there are multiple sessions being created. One thing to note is that this happens a lot, it is not 100% repeatable, i.e. sometimes everything works fine.

The objects are sizeable, but not huge (About 100 small strings) so it seems unlikely that I'm maxing out a session size. I'm not putting any other objects in there.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

何处潇湘 2024-10-18 11:03:11

听起来您正在经历一个您没有意识到的未处理的异常。出现此类异常时,会话将被销毁。

在 global.asax 中将断点设置为 Application_OnError、Session_End 和 Session_Start 方法来检查它们

Sounds like you are expieriencing an unhandled exception, that you are not aware of. The session gets destroyed upon such exceptions.

Set breakpoints in the global.asax to the Application_OnError, Session_End and Session_Start methods to check for them

淡淡の花香 2024-10-18 11:03:11

好的,我解决了(在 citronas 的 global.asax 提示的帮助下)。

与以往一样,事实证明我在问题和评论中断言的事情并不像我想象的那么真实。

前两个调用实际上并不是串行进行的,但第二个调用是在第一个调用有时间返回之前进行的。这导致了两次 Session_Start 调用(有趣的是使用相同的会话 ID)。因此,第一个会话数据被覆盖。

更改我的应用程序以等待每个呼叫返回解决了问题。

感谢所有回答或评论的人。

Ok, I solved it (With the help of the global.asax tip from citronas).

As ever, it turns out that I asserted things in my question and comments that were not as true as I'd assumed.

The first two calls are not actually made in serial, but the second was being made before the first had had time to return. This resulted in two Session_Start calls (Interestingly with the same session ID). The first session data was therefore being overwritten.

Changing my app to wait for each call to return fixed the problem.

Thanks to everyone who answered or commented.

╰ゝ天使的微笑 2024-10-18 11:03:11

哪一个消失了,第一个还是最新添加的?您的应用程序似乎在第一次调用后被回收,因此第一个添加的将被删除。

Which one disappeared, the first or the latest added? Your application seems to be recycled after the first call, so the first added will be erased.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文