为什么我们的Session会失效? 我做了一个电子商务方面的网站,需要在我的页面上选购商品,然后到网上交易的网站去付费,在付费完成后回到我的页面,然后就可以继续其他的操作了.可是当我从付费的网站回到我的页面后,Session就失效了,变为了null.哪位高手能帮我解决这个问题啊?急!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 超时了?Session默认是20分钟,可以设长时间,可以考虑用cookies或数据库存购物车 超时了?Session默认是20分钟,可以设长时间,可以考虑用cookies或数据库存购物车 付费完成后,你就 可以查看你的购物清单了.想购物可以重新提交呀.应该是没有什么问题的,先前我也做个,是没有问题的.建议不要用COOKIES,会有问题的.还可以考虑用HASHTABLE.根据VALUE在取出相应的字段. 我是选购一些数据,付费以后就可以下载.数据是存放到Session中的.如果用户付费成功,就将返回到我的页面可以继续下载.但是,回到我的页面以后Session就失效. 我跟踪了Session_Start函数,发现这个函数被调用,也就意味着Session被重新创建了,以前的Session就丢失了.有比较好的解决办法吗? 超时Session会丢失的,同意1楼的看法 换个存储的方式吧。。对于服务器上的Session值,一般是不依赖的。 用其他什么方式比较好啊?我就对Session的使用比较熟悉 在关闭浏览器,Session就失效了做个测试:如果在开发的系统中使用Session状态:在不关闭Browser的情况下,进行用户登录,会发现可以直接跳过"登录模块"的密码检测,直接进入该用户的页面.原因是:因为登录在系统中的用户没有退出,Session状态只对当前的用户有效.关闭浏览器,关闭了数据库的连接,退出系统,Session就失效了 用cookic吧,用Session有时间限制,要不然就用一个隐藏的框架页循环刷隐藏页面,在隐藏页面中调用这个Session,就不会失效了! 我看不像超時的問題我估計是妳跳進支付網站的時候用的是本窗口 而那個網站為暸安全把所有的COOKIE和SESSION都给清理暸,然后存暸它自己的數據。妳再跳囬來 相當于新開的窗口,從而丟暸SESSION試下支付窗口新開 楼上的解释不对,“那个”网站是不可能去清理原来“这个”网站的session的哈。session在服务器hold的。楼主跳到付费的网站的时候,自己的页面还在吗?是跳转的还是新开的窗口? 听楼上两位的都有道理~~自己的页面不在了,是在_Parent打开的.不过我跟踪了Session_End,发现这个事件在我关闭浏览器之前不会发生.而跟踪Sessin_End,发现从支付网站回来后,这个函数就被调用了. TO james_hunter(辉) SESSION的工作原理知道不?SESSION是基于COOKIE的也就是说SESSION的部分信息是随HTTP流传递的 当浏览器跨应用重新定向后 COOKIE已经被改变了服务端里的部分数据已经无法取出SESSION自然会丢 而跟踪Sessin_End,发现从支付网站回来后,这个函数就被调用了.这就是因为COOKIE被强行中断了 SESSION结构是临时性的 码匙丢了SESSION也就作废不信的话 可以完全彻底的禁止COOKIE 你再看看SESSION还能不能起作用? 可是我跟踪Session_End,发现从支付网站回来没有调用这个函数 不是超时问题,Session是在站内的ASPX页面之间跳转时能自动保存的数据,但是因为你跳转到的付费页面不是你站内的ASPX页面,你访问付费页面后Session就丢掉了,再跳回来当然就是Null。给楼主一个建议,在这种情况下付费页面应该在新窗口中打开,不要用原窗口跳转,这样楼主你的Session就不会丢了。 一般是不会丢失的。有没有修改了非AppData目录下的文件? 应该是没有修改AppData目录下的文件,我觉得比较可能的是调用了其他的付费网页后又回到本页面的原因. jerryfos(想飞)"在这种情况下付费页面应该在新窗口中打开,不要用原窗口跳转,这样楼主你的Session就不会丢了" 我试了还是不行,这样的话我返回的页面怎么和我原窗口相互关联啊? TO 楼主 原页面不动 用JS在前端OPEN支付网站 很简单嘛 想飞说的是对的,楼主要关联原窗口,可以使用模态窗口来打开新页面。你可以看看淘宝上使用支付宝时采用的方法。另外,微软的AJAX extension 有一个很酷的模态窗口效果,也可以参照。虔诚,你说的部分是对的,SessionID 可以基于cookie,关闭浏览器或者重订向URL会导致本地的Session cookie失效.但是因为Session对象本身是在服务器的,并且不会丢失,所以也可以保存sessionID的session机制,而是自己实现一个持久化SessionID的方法(web.config中修改设置<system.web> <sessionState cookieless="true" /> </system.web>,使Session的传递脱离Cookie).另一方面,因为SessionID的cookieKey是不可预知的(至少我不知道怎么预知),除非利用ActiveX删除windows\cookie下的所有文件,否则新的网站不太有可能去清空前一个网站的cookie. 关于session和cookie,这篇文章不错:http://www.360doc.com/showWeb/0/0/109481.aspx SessionID丢了.服务器为你新建了一个会话 如果不对session进行存取操作,每一次的请求将是新的session. awuzi(阿无知) ( ) 信誉:100 Blog 加为好友 2007-04-12 10:14:53 得分: 0 如果不对session进行存取操作,每一次的请求将是新的session.______________________________________________________________________________这句话什么意思啊? james_hunter(辉) 如何关联窗口?保存sessionID的session机制是怎么回事? 同一个浏览器,只会保存一个Session的内容,肯定是你转到付费网站的时候,那个网站重建Session了,这样,再转回到你的网站的时候,Session肯定没了,建议你用另外的方法来做... 购物车一般都是做张表,用session的话不及时清空可能会增加系统开销,清空不正确又会有错误,况且session本身就可能产生丢值的问题! 在服務器上打開 state server服務(裝過.net framework就有 )在webconfig中設置Session 的mode為StaterServer這樣把 session的信息存放在專門的server中試試,穩定的多,值不容易丟。 我也想用楼上所说的方法,可是用起来以后我的ajax方法出错了,并且错误莫名其妙.我用的是AjaxPro,函数的返回值正确,在前台调用那个方法时候就出错了. Yzw_2006() ( ) 信誉:100 Blog 加为好友 2007-04-12 16:47:15 得分: 0 建议到付费的那个网站时,新打开一个窗体,保留原来本网站的页面。付费确认最好是那边能返回一个值用来判断。 我改成这样子了,原来的网页没关掉,那边也返回了一个值,可是Session还是无效啊 谢谢大家的回复,问题解决,不过方法不是很好,把Session的值先存到数据库中,然后付费回来以后再从数据库中读取出来 看看提交的表单中有没有提供自定义字段... 我用的神州付做的支付接口,里面有privateField,可以定义些自定义...在支付成功后,返回服务器返回地址时,同时用privateField返回了原本要用session保存的数据... 未能创建mutex(什么都重装了,还是不行啊!!) 我一些高分贴,看看你们能否有办法 ActiveX在ASP.NET页面中实时数据库交互 急急,在VS2005中如何用SQL实现分页啊 在VS2005下,如何实现检索数据库中的表 请问打印的功能如何实现 截取字符串的问题 如何实现自定义标签 asp.net 请教页面传值和返回的问题 VS.NET 2003 beta已经有了,哪里有的下? web service中的状态保持问题 急!安装vs2005时出现:1406错误,无法将数值写入键\Software\Classes\.xdr\OpenWithProgids\Shared
还可以考虑用HASHTABLE.根据VALUE在取出相应的字段.
我跟踪了Session_Start函数,发现这个函数被调用,也就意味着Session被重新创建了,以前的Session就丢失了.有比较好的解决办法吗?
做个测试:
如果在开发的系统中使用Session状态:
在不关闭Browser的情况下,进行用户登录,会发现可以直接跳过"登录模块"的密码检测,直接进入该用户的页面.
原因是:因为登录在系统中的用户没有退出,Session状态只对当前的用户有效.关闭浏览器,关闭了数据库的连接,退出系统,Session就失效了
我估計是妳跳進支付網站的時候用的是本窗口 而那個網站為暸安全把所有的COOKIE和SESSION都给清理暸,然后存暸它自己的數據。
妳再跳囬來 相當于新開的窗口,從而丟暸SESSION
試下支付窗口新開
楼主跳到付费的网站的时候,自己的页面还在吗?是跳转的还是新开的窗口?
SESSION的工作原理知道不?
SESSION是基于COOKIE的
也就是说SESSION的部分信息是随HTTP流传递的 当浏览器跨应用重新定向后 COOKIE已经被改变了
服务端里的部分数据已经无法取出SESSION自然会丢
虔诚,你说的部分是对的,SessionID 可以基于cookie,关闭浏览器或者重订向URL会导致本地的Session cookie失效.但是因为Session对象本身是在服务器的,并且不会丢失,所以也可以保存sessionID的session机制,而是自己实现一个持久化SessionID的方法(web.config中修改设置<system.web> <sessionState cookieless="true" /> </system.web>,使Session的传递脱离Cookie).另一方面,因为SessionID的cookieKey是不可预知的(至少我不知道怎么预知),除非利用ActiveX删除windows\cookie下的所有文件,否则新的网站不太有可能去清空前一个网站的cookie.
http://www.360doc.com/showWeb/0/0/109481.aspx
如果不对session进行存取操作,每一次的请求将是新的session.
______________________________________________________________________________
这句话什么意思啊?
在webconfig中設置Session 的mode為StaterServer
這樣把 session的信息存放在專門的server中試試,穩定的多,值不容易丟。
建议到付费的那个网站时,新打开一个窗体,保留原来本网站的页面。付费确认最好是那边能返回一个值用来判断。
我改成这样子了,原来的网页没关掉,那边也返回了一个值,可是Session还是无效啊
我用的神州付做的支付接口,里面有privateField,可以定义些自定义...在支付成功后,返回服务器返回地址时,同时用privateField返回了原本要用session保存的数据...