SessionState在超时前过期

时间:2014-03-20 20:01:20

标签: asp.net session c#-4.0

我的网络应用程序中有2个会话
这是我如何宣布我的会议:
的Global.asax

protected void Session_Start(object sender, EventArgs e)
    {
        Session["login"] = "";
        Session["loginName"] = "Login";

    }

的Web.config

<sessionState mode="InProc" cookieless="true" timeout="3600" /> <!--set the session timeout in minutes -->
会议班:

    public class clsSession
{
    //declare sessions
    private static object cardCode;
    private static object cardName;       

    //get/set Login id session
    public static string LoginIdSession
    {
        get
        {
            cardCode = HttpContext.Current.Session["login"];
            return cardCode == null ? "" : (string)cardCode;
        }
        set
        {
            HttpContext.Current.Session["login"] = value; 
        }
    }

    public static string LoginNameSession
    {
        get
        {
            cardName = HttpContext.Current.Session["loginName"];
            return cardName == null ? "Login" : (string)cardName; 
        }
        set
        {
            HttpContext.Current.Session["loginName"] = value;                 
        }
    }
}

问题是2次会议在超时前到期!
谢谢

1 个答案:

答案 0 :(得分:1)

那可能有很多原因。其中一些是:

  • Machine.ConfigWeb.ConfigGlobal.asax已修改
  • bin目录或其内容已修改
  • 修改虚拟目录的物理路径
  • IIS中的设置很少,可能导致应用程序池或工作进程被回收。
  • 如果您设置了Web场,则需要使用Out-Proc会话状态(StateServer或SQL Server)

同时检查,IIS:

右键点击application pool - &gt; properties

Recycling Tab - &gt; “回收工作进程(以分钟为单位)”如果选中此选项,请确保此处设置的时间应与web.config中设置的会话超时相同。

Performance Tab - &gt; “在理想之后关闭工作进程”确保此处设置的时间应与web.config中设置的会话超时相同