日期:2014-05-18  浏览次数:20456 次

关于自动更新登陆次数的问题

我想当用户登陆的时候就自动更新登陆表里的信息,可是当我在应用程序里写时,发现Session不能在里头用,这是为什么啊!各位大侠帮帮忙啊

protected   void   Application_Start(Object   sender,   EventArgs   e)
{
SqlConnection   con=DB.createConn();
con.Open();
string   userName=Session[ "userName "].ToString();
string   sqlLoginNum= "select   userLoginNum   from   userDetails   where   userName= ' "+userName+ " '   ";
SqlCommand   cmd=new   SqlCommand(sqlLoginNum,con);
int   count=Convert.ToInt32(cmd.ExecuteScalar());
Application[ "total "]=count;
                                                                con.Close();

                                    }


protected   void   Session_Start(Object   sender,   EventArgs   e)
{
                                    Application.Lock();
    Application[ "total "]=(int)Application[ "total "]+1;
    Application.UnLock();
}

                                protected   void   Application_End(Object   sender,   EventArgs   e)
{
                            SqlConnection   con=DB.createConn();
    con.Open();
    string   userLogin=Session[ "userName "].ToString();
    string   sqlLoginNum= "update   userDetails   set   userLoginNum= ' "+Application[ "total "].ToString()+ " '   where   userName= ' "+userLogin+ " '   ";
    SqlCommand   cmd=new   SqlCommand(sqlLoginNum,con);
    cmd.ExecuteNonQuery();
    con.Close();


说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Web.HttpException:   会话状态在此上下文中不可用。

源错误:  

行   30:   SqlConnection   con=DB.createConn();
行   31:   con.Open();
行   32:   string   userName=Session[ "userName "].ToString();
行   33:   string   sqlLoginNum= "select   userLoginNum   from   userDetails   where   userName= ' "+userName+ " '   ";
行   34:   SqlCommand

------解决方案--------------------
不在这里写,在登录成功之后写。
------解决方案--------------------
1 登陆成功应该在页面操作
2 如果想访问Session可以这样用 System.Web.HttpContext.Current.Session
------解决方案--------------------
protected void Session_Start(Object sender, EventArgs e)
{

}
//是服务器会话开始的时间,比如你打开OA的起始页面(还没有点击登录)这个时间已经开始了
在这个时间当中应该能得到SessionID但是这个ID是服务器为了分别不同用户产生不同会话,自己创建的,和平时理解的session[ "UserName "]不一样,这个ID是为了,三个用户同时提交一个页面的请求,返回页面