我们有一个ASP.Net 2.0 (VS2005)应用程序,它在本地工作良好,但在远程服务器上部署时有时会丢失会话状态。
我怀疑IIS重新启动应用程序从而消除用户的会话状态时可能会出现问题。然而,服务器并不在我们的控制之下.因此,我们不能简单地启动IIS管理并检查应用程序设置。当然,另一个可能的原因是客户端出于某种原因拒绝ASP.Net会话cookie。
(我们基本上排除了代码中的错误,因为它是一个简单的应用程序,它从不尝试从会话对象中删除任何内容,但当然.这些是著名的遗言,是吧?)
你怎么用程序诊断这件事?
我主要是想弄清楚如何诊断这个问题;如果过度热心的应用程序回收是罪魁祸首,那么编写代码应该不会太困难。
我确信这对于ASP.Net开发人员来说是一个常见的问题。
发布于 2008-12-30 20:06:07
发布于 2008-12-30 20:04:51
将一些日志代码添加到global.asax Application_Start方法中,您将能够看到/如果您的丢失是由应用程序重新启动造成的(或者至少您将看到服务器何时启动,如果您知道会话同时丢失,您就知道了问题所在)。
解决方法是使用proc会话状态(如果您没有对服务器的控制,则可能必须基于SQL )。它需要对代码进行一些额外的工作,因为您在会话中存储的所有内容都必须是可序列化的,但是解决了应用程序重新启动导致会话丢失的问题。
发布于 2008-12-30 20:18:50
为应用程序池中的多个工作线程(Web花园)配置的IIS可能导致会话状态的丢失。
https://stackoverflow.com/questions/401311
复制相似问题