我正在尝试为网站上的每个客户端创建 session 代码。在全局asax的Session_Start中,我有以下代码:
private static long codSesion = 0;
private static object codSesionLocker = new object();
protected void Session_Start(object sender, EventArgs e)
{
if (Session["CodSesion"] == null)
{
lock (codSesionLocker)
{
if (Session["CodSesion"] == null)
{
if (codSesion == 9999)
codSesion = 0;
codSesion++;
Session["CodSesion"] = codSesion;
}
}
}
}
当我监视它时,这似乎是完美的。闲置一段时间后,问题开始了。发生的事情之一是太多次从1开始(没有达到9999,并且没有重新启动IIS)。最近,甚至比taht还糟:我使用了代码1和2。我停止使用服务器(让IIS不 Activity )。在将近1小时(50分钟)后,我再次尝试。 IIS给我的代码为2(与最后一个代码2不同的PC)。
请给我很大的帮助。
最佳答案
我不确定这是否能解释您上面列出的所有行为,但是默认情况下,一段时间不 Activity 之后,IIS中的应用程序池将回收(可以在IIS中为每个应用程序池更改这些设置)。当应用程序池回收时,该池的新实例将被完全初始化。