0

在我的网站上

  1. 登录前填写表单保存Session中的数据
  2. 使用 Linkedin ID 登录
  3. 在 Pageload 登录后从会话中获取数据然后插入 SQL 数据库

我的问题是有时我得到会话而其他时候我没有得到会话(会话丢失)(主要是当 3-4 人同时测试时...... 2-3 得到会话而 1-2 没有得到会话)

谁能告诉我是什么问题?我怎么解决这个问题?

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

登录前进入会话 Session["sesObjFundRaiseSeek"] = objFundRaiseSeek;

登录后获取

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

1 回答 1

0

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

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

更多信息: http: //msdn.microsoft.com/en-us/library/h6bb9cz9 (v=vs.71).aspx

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

在下面的示例中,我将到期日期设置为 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);
于 2013-07-03T14:42:48.333 回答