为什么我们的Session会失效?
我做了一个电子商务方面的网站,需要在我的页面上选购商品,然后到网上交易的网站去付费,在付费完成后回到我的页面,然后就可以继续其他的操作了.可是当我从付费的网站回到我的页面后,Session就失效了,变为了null.哪位高手能帮我解决这个问题啊?急!!!
------解决方案--------------------超时了?Session默认是20分钟,可以设长时间,可以考虑用cookies或数据库存购物车
------解决方案--------------------超时了?Session默认是20分钟,可以设长时间,可以考虑用cookies或数据库存购物车
------解决方案--------------------付费完成后,你就 可以查看你的购物清单了.想购物可以重新提交呀.应该是没有什么问题的,先前我也做个,是没有问题的.建议不要用COOKIES,会有问题的.
还可以考虑用HASHTABLE.根据VALUE在取出相应的字段.
------解决方案--------------------用业务实体保存购物车信息
------解决方案--------------------超时Session会丢失的,同意1楼的看法
------解决方案--------------------换个存储的方式吧。。对于服务器上的Session值,一般是不依赖的。
------解决方案--------------------在关闭浏览器,Session就失效了
做个测试:
如果在开发的系统中使用Session状态:
在不关闭Browser的情况下,进行用户登录,会发现可以直接跳过 "登录模块 "的密码检测,直接进入该用户的页面.
原因是:因为登录在系统中的用户没有退出,Session状态只对当前的用户有效.关闭浏览器,关闭了数据库的连接,退出系统,Session就失效了
------解决方案--------------------用cookic吧,用Session有时间限制,要不然就用一个隐藏的框架页循环刷隐藏页面,在隐藏页面中调用这个Session,就不会失效了!
------解决方案--------------------我看不像超時的問題
我估計是妳跳進支付網站的時候用的是本窗口 而那個網站為暸安全把所有的COOKIE和SESSION都给清理暸,然后存暸它自己的數據。
妳再跳囬來 相當于新開的窗口,從而丟暸SESSION
試下支付窗口新開
------解决方案--------------------楼上的解释不对,“那个”网站是不可能去清理原来“这个”网站的session的哈。session在服务器hold的。
楼主跳到付费的网站的时候,自己的页面还在吗?是跳转的还是新开的窗口?
------解决方案--------------------TO james_hunter(辉)
SESSION的工作原理知道不?
SESSION是基于COOKIE的
也就是说SESSION的部分信息是随HTTP流传递的 当浏览器跨应用重新定向后 COOKIE已经被改变了
服务端里的部分数据已经无法取出SESSION自然会丢
------解决方案--------------------而跟踪Sessin_End,发现从支付网站回来后,这个函数就被调用了.
这就是因为COOKIE被强行中断了 SESSION结构是临时性的 码匙丢了SESSION也就作废
不信的话 可以完全彻底的禁止COOKIE 你再看看SESSION还能不能起作用?
------解决方案--------------------不是超时问题,Session是在站内的ASPX页面之间跳转时能自动保存的数据,但是因为你跳转到的付费页面不是你站内的ASPX页面,你访问付费页面后Session就丢掉了,再跳回来当然就是Null。给楼主一个建议,在这种情况下付费页面应该在新窗口中打开,不要用原窗口跳转,这样楼主你的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丢了.服务器为你新建了一个会话
------解决方案--------------------