一般登录后存session,一系列操作都能获取session
但是如果我在页面跳转后session丢失,怎么让session有效并到达所以页面??
请留代码!以防表述不清!
登录页login
基本页面a(登录后直接跳转)
添加页面b,(登录后间接直接跳转,a中一个Botton连接跳转的!)
我的session可以在a中直接读取,但是添加页面b却不能!
你的表述就不清楚。。什么样的页面跳转丢失了session?
你的session怎么存取的?
你是不是跳转到不同域名的页面上去了。如果那样的话,session肯定是丢失掉了
一般情况是你有个basepage页面,这个basepage继承自system.web.ui.page所有页面都继承自这个页面,在这个类里面判断,如果没人登录就跳转到登录页面,但是加上了一个参数,这个参数就是你什么页面过去的。比如说,这个参数是fromurl,那么,你就在basepage里面判断,如果没人登录,就跳转到登录页面login.aspx?fromurl=当前页面的url。。。
这样,你登录以后,看有没有fromurl这个参数没有,有的话就跳转到页面,没有就跳转到其他,比如说首页。
上代码吧。
你所说的丢失会不会是指session被抛弃掉?
登录页login
基本页面a(登录后直接跳转)
添加页面b,(登录后间接直接跳转,a中一个Botton连接跳转的!)
我的session可以在a中直接读取,但是添加页面b却不能!
如果不跨域的话应该是可以直接获取的。
session 只要是同个会话,就可以不同页面读取,你用Global.asax了吗?让你的网站保持在同个会话中,就行了。
有两种可能性
1. Session的名称可能在其它地方用错误,例如你在一些代码中,通过Session["Message"]来获取对象,而在另外的代码中,你少写了一个s,通过Session["Mesage"]来获取对象。对于这些问题,可以通过Session Object 来帮助你减少在Session对象使用上的错误。
2. 跳转时,使用了完整的URL路径,如:http://www.domain.com/yourpage.aspx。
Session的工作和cookie有关系。一般来说,Session通过cookie来对当前的访问进行标识。当Cookie被禁用后,如果还要让Session进行工作,那就要在Web.config中对sessionState进行配置
<system.web> <sessionState cookieless=”AutoDetect” regenerateExpiredSessionId=”true” /> </system.web>
当cookieless session被启用时,系统会自动在URL上添加sessionId。
因此,当你跳转到其它页面时,一定要是用相对路径而不是一个完整的URL。这样,系统将会被自动在URL上加上sessionId。自然就会发生session丢失的情况。