2011-09-01 94 views
1

今天弹出来,很奇怪。我们无法弄清楚什么改变了,但之前正在工作。ASP.Net会话在回发之间清除?

本质上,我们有一个名为“ProjectSession”的类,它包含静态属性和方法来处理会话。
主要的是ProjectSession.ProjectId这只不过是HttpContext.Current.Session["ProjectID"]的包装。当一个新项目被创建时,我们在这个属性中设置ID。如果用户已经有一个项目,我们在页面加载if (!IsPostBack)上设置值。很简单。

但是,今天的中途,我们突然开始看到这个值从会话中消失。实际上,整个会话对象正在清除。在网站的第一页,如果用户有一个项目,我们设置该值。然后在第一次Button单击时,我们检查该值,它是空的。

我们今天所做的每一段代码似乎都没有影响到这一点,事实上,在我们的生产服务器上一切正常,只是不在我们的本地机器上。

如果有人有任何想法可能会导致此问题,请让我知道。

p.s. - >我们有双重,三重和四重检查。有0行代码表示ProjectSession =,正好有2行代码表示ProjectSession.ProjectID =,那些是我在这个问题中提到的2行。

+0

您是否正在运行多个w3wp进程?如果是这样,你使用状态服务器还是数据库来保存会话? –

+0

应用程序池可以回收。它有可能回收吗? – bryanmac

+0

在我们的本地机器上,它只是使用默认的“Cassinni”服务器(我相信这就是它所称的,Visual Studio自动启动的服务器),所以我不认为这两种情况都适用 –

回答

2

Cassinni会一直重置“应用程序池”(与IIS不一样)。您应该尽可能在接近生产的环境中进行测试。在最低限度内,我建议你使用IIS,如果它是你试图解决和重现的关键错误。

2

答案是,有人加入这行到我们的Web.Config文件: <httpCookies domain="THEPUBLICSITE" />

所以服务器时,我们的工作在当地,我们试图做跨站点脚本(XSS)认为。