session保存不了

orcishfans 2007-11-06 10:02:30
再做个网站,登陆用VS2005自带的登陆控件实现的,
我再登陆成功的loggedin事件里加了session["UserName"]=User.Identity.Name;
但是在其他页面这个Session获取不了,不知道为什么
一般Session丢失是怎么回事?
有人知道吗
...全文
446 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrluoluo 2008-03-23
  • 打赏
  • 举报
回复
user.identity.name,取值的时机不对吧?得再去研究研究VS的验证机制!
lastyhf 2008-03-23
  • 打赏
  • 举报
回复
我也遇到这样的问题了 强烈求高手解答啊!!!
沉默的糕点 2007-11-06
  • 打赏
  • 举报
回复
其实不需要写在Session里面

验证是否正确登陆,用Authenticate事件,可以参考文档的写法。

正常来说,用户名称会自动保存在cookie里面,可以通过User.Identity.Name获取,而且User对象事Page的属性,每个页面都可以使用,何必再把它保存在session里面了

如果用户对象需要处理的话可以些多个 UserProfile类
其中
public User Current
{
get
{
if(Session["aaa"]==null)
Session["aaa"] =dao.getUser(HttpContext.Current.user.identity.name);
return (user)Session["aaa"]
}
}

ps.分这太少了
活靶子哥哥 2007-11-06
  • 打赏
  • 举报
回复
贴代码
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
我想在登陆控件登陆成功后就保存session["UserName"],应该怎么写,写在loggedin事件里不行
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
现在问题又变了,不知道为什么
本来再login控件的loggedin事件里赋值session["UserName"]=User.identity.Name是空的,在其他页面
用需要验证if Session["UserName"]==null的地方会执行
但是现在是在loggedin事件里赋值session["UserName"]=User.identity.Name后,session["UserName"]就不知道是什么了,response.write输出来什么都没有,但session["UserName"]==null的语句又不执行,不知道
user.identity.name这里变成了什么

不过,登陆成功后,其他页面的都可以输出response.write(user.identity.name)又是正常的。

我想问longgedin事件到底是什么时候执行的?先谢了
sunlovesea 2007-11-06
  • 打赏
  • 举报
回复
先看看User.Identity.Name能否保存在变量中
string temp=User.Identity.Name;
设置断点看看temp能不能取到值~
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
就是啊,我也是这么想的

登陆控件login控件登陆成功后,是不是算验证通过了,为什么再登陆控件的loggedin事件里给
session 赋值user.identity.name是空的
而登陆成功后其他页面的user.identity.name则正常的,
这是为什么?先谢过了
michael_sw 2007-11-06
  • 打赏
  • 举报
回复
呵呵 分多少都无所谓的 来这都是为了学习知识嘛~~~~~~~~~~
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
1楼不要说的这么绝啊,处了RP,难道就没其他原因了吗
我是新手来这里才不久,只会问题目,不会回答,分数没多少了,要省点用了
michael_sw 2007-11-06
  • 打赏
  • 举报
回复
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

你最好跟踪一下 看看是不是你写错了 一般情况下是不会发生丢失的
FollowCN 2007-11-06
  • 打赏
  • 举报
回复
5分太少了吧,可以看出RP来。
----------------------
断点跟踪,看SESSION是否存在session[ "UserName "]=User.Identity.Name;
----------------------
一般都是自己REMOVE了,但自己还不知道。
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
不是吧,写在authenticate里,自带的验证就没用了啊,AUTHENTICATE事件应该是自定义验证处理程序的吧。
按IDE提示loggedin事件是对用户身份验证后引发的,应该是这个的啊,为什么会不行呢,真奇怪。
xujunsweet 2007-11-06
  • 打赏
  • 举报
回复
就是在login的Authenticate事件里写,我就是这么写的
orcishfans 2007-11-06
  • 打赏
  • 举报
回复
我的问题是想LOGIN控件登陆后,就把USERNAME,写入SESSION
用LOGGEDIN事件写不进去,即使写进去了也是空字符的,不正常的

因为我其他页面的用户验证都是用if session["username"]!=null,所以我想把登陆后保存用户
到session里,不知道怎么保存,郁闷啊,LOGIN控件不太熟悉

谢谢大家了
xujunsweet 2007-11-06
  • 打赏
  • 举报
回复
在 protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
这个事件里给Session赋值,

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧