我正在尝试为网站上的每个客户端创建 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中为每个应用程序池更改这​​些设置)。当应用程序池回收时,该池的新实例将被完全初始化。

10-01 17:02