登录后会话丢失

时间:2013-07-03 14:27:33

标签: c# asp.net sql-server session-variables

在我的网站上

  1. 登录前填写表单在会话
  2. 中保存数据
  3. 使用Linkedin ID登录
  4. 登录后,从Pageload获取会话数据,然后插入SQL数据库
  5. 我的问题有时候我会得到会话而有时候我没有得到会话(会话丢失)(大多数情况下3-4人同时进行测试... 2-3次会议和1-2次没有得到会话)

    任何人都可以告诉我这是什么问题吗?我该如何解决这个问题?

    还有其他方法可以完成这项任务吗?

    登录前进行会话                 会话[“sesObjFundRaiseSeek”] = objFundRaiseSeek;

    登录后

    if (Session["sesObjSellSeekBL"] != null)
     {
       clsSellSeekBL ObjSellSeekBL = (clsSellSeekBL)Session["sesObjSellSeekBL"];  
     }
    

1 个答案:

答案 0 :(得分:0)

您的会话在很短的时间后超时是否有问题?您可以在web.config中输入默认会话超时。这是在system.web下完成的。这是一个例子,其中480是分钟数:

<sessionState timeout="480"></sessionState>

有关详细信息:http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.71).aspx

另一种解决方案是使用Cookie。我建议使用Cookie来存储用户状态信息。由于Cookies存储在用户计算机上,因此更容易配置:

我在以下示例中将到期日设置为100000天:

HttpCookie myCookie = new HttpCookie("sesObjSellSeekBL");
myCookie.Value = Convert.ToString(user_id); //store the user id here at the very least
myCookie.Expires = DateTime.Now.AddDays(100000d);
Response.Cookies.Add(myCookie);

以下是检查Cookie的方法:

if (Request.Cookies["sesObjSellSeekBL"] != null) 

以下是您如何记录用户:

HttpCookie myCookie = new HttpCookie("sesObjSellSeekBL");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);