vs2010 session丢失问题

问题描述

最近写项目时发现一个问题:a.aspx页面:Session["a"]="123";b.aspx页面取Session["a"]为空;调试后发现在b页面中sessionid变了。奇怪的是我在Global文件中也给session赋值:protectedvoidSession_Start(objectsender,EventArgse){//与a页面一样的写法Session["a"]="123";}此时在b页面就可以取到Session["a"]的值,且是Global里的Session["a"]a页面的session一直取不到!求各位大神给个思路和解决办法!

解决方案

解决方案二:
session本来就是“不稳定”的,应该尽量避免使用。传值有url、post、cookie、Server.Transfer等多种方式。
解决方案三:
我的session用来保存用户登录信息的,其他存储方式都不安全啊
解决方案四:
session不应该会变啊是同一个会话吗?
解决方案五:
肯定是同一个页面同一个会话啊
解决方案六:
页面跨域了?
解决方案七:
没有跨域,就是同一个项目下的两个aspx页面
解决方案八:
你A页面直接给SESSON值,B页面取不到么?如果取不到就是IE问题,你看看是不是COOKIE关了
解决方案九:
Global文件中也给session赋值b页面是能取到值的,所以不是cookie关了
解决方案十:
你不是session丢失,你是sessionid变了,你是在一个浏览器里打开的a和b吗?同一个浏览器里面的话,你是不是设置了不同标签不共享一个会话,你可以换其它浏览器测试下,或者还原浏览器默认设置试试
解决方案十一:
把A页面导航到B页面(或者反过来)的代码贴出来,两个页面分别是如何打开的?
解决方案十二:
Session保存登录信息,然后写在Global里面?
解决方案十三:
引用10楼sp1234的回复:

把A页面导航到B页面(或者反过来)的代码贴出来,两个页面分别是如何打开的?

a.aspx:Session["a"]="123";response.redirect("b.aspx");b.aspx:stringstr=Session["a"].tostring();经过我的测试,可能是我之前更改过cookie作用域的关系,但是我把更改cookie的作用域禁掉后,有时正常了,有时sessionid又变了,session也丢失了......
解决方案十四:
显然你没有说明a是如何打开的,也没有说明b是何时打开的。要了解”页面是如何打开的“你就仅仅写这样两行代码吗?怪不得诊断不出任何问题。这两行代码放在不同地方,完全可能访问不同的Session。仅贴出这样两行代码没用。如果说不明白,你就贴出一个单独的demo程序来,用2个文件、10几行代码来重现你的问题。看来你应该少提问,多自己测试。
解决方案十五:
以下几点建议:1)Session的确不是很稳定,尤其是在web.config中的sessionState节点属性为mode="InProc"时,建议配置成"StateServer",并借助services.msc启动该服务;2)检查a.aspx和b.aspx两个页面是否始终在同一个浏览器窗口中打开,不要出现弹窗打开或新标签打开。

时间: 2024-07-30 18:05:28

vs2010 session丢失问题的相关文章

ASP防止Session丢失的方法

也许很多ASP开发者都会遇到这样的情况:在会话期间(session)无故丢失sessio n.换而言之,丢失了SessionID,同样session级的变量也会丢失. 很多session丢失的原因是因为错误的程序或者是错误的虚拟目录结构. SessionID 的改变有下面几个原因. 原因一: Netscape的浏览器会认为"/App/user.asp"跟"/app/user.asp"是两个不同的程序.它会自动地开始一个新的会话期(new session).所以,才你

ASP.NET Session丢失原因和应对策略

正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. 现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: <sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:424

asp.net session丢失的解决方法

现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time

ASP.NET中Session丢失原因与解决方案小结

win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的session丢失. 因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失. 解决办法: 修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收该进程.通过使用默认应用程序池,可以确保多个应用程序间互相隔离,保证由于一个应用程序的崩溃不会影响另

PHP中SESSION丢失(不能跨页面传递)解决办法

  一般来说,使SESSION丢失有以下几点: 1.客户端禁用了cookie 2.浏览器无法存取cookie 3.php.ini中的session.use_trans_sid=0或编译时 没有打开–enable-trans-sid选项 Session储存于服务器端(默认以文件方式存储),根据客户端提供的session id来得到用户的文件, 取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String (就是访问的URL的"?"后面的部

ASP.NET技巧:Session丢失原因与解决方案小结

asp.net|session|技巧|解决 win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的session丢失. 因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失. 解决办法: 修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收该进程.通过使用默认应用程序池,可以确保多个应用程序间互

win2003 server下的IIS Session丢失原因与解决方案小结

win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的session丢失. 因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失. 解决办法: 修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收 该进程.通过使用默认应用程序池,可以确保多个应用程序间互相隔离,保证由于一个应用程序的崩溃不会影响

PHP:IE下的iframe跨域导致session丢失问题解决方法

今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况). 很明显,session无法被保存.但是直接在地址栏打开那个登录页面,一切都正常啊.真是奇怪啊. 在网上搜索了一下.发现这个问题还真有不少人提及到.最后的解决方法是在那个登录页面里加上以下代码: 代码如下: <span style="font-family:Microsoft YaHei; font-size:14px">header('P3P: CP="ALL ADM

ASP.NET Session丢失问题原因及解决方案

正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. 现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: <sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:424