Session 丢失问题!

fgh0302 2010-06-10 10:05:46
公司系统 经常出现 session 丢失问题,以前都是用cookie 因为是2个项目在一个目录下,可能cookie命名有问题

老冲突 必须 删除cookie才行,后来把其中一个项目全 改成session了 结果会出现丢失现象。而且我发现好像都是

打开新窗口的时候丢失 直接跳转没事~~
...全文
151 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
porschev 2010-07-11
  • 打赏
  • 举报
回复
1。把session的过期时间设置大点。。

2.再重新检查数据访问层的代码。。。。sqlconnection,sqldatareader都要关闭和注销,sqlcommand也要注销。。。。。。

3.跳转尽量少用response.Redirect();

4.定时回收服务器资源。。

5.实在不行。。sqlserver方式保存session


以上都是经验。。。不知道对你有不有帮助
GT7466 2010-06-10
  • 打赏
  • 举报
回复
“cookie命名冲突”,那就避免冲突!
nevergu 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]
设置session inproc -->stateserver .开启asp.net state服务

不要将session存储在IIS进程内
[/Quote]

/strong
qq234121906 2010-06-10
  • 打赏
  • 举报
回复
是不是把cookie给清空了额。
session对话标记也是在cookie中保存的。
yymycabbage 2010-06-10
  • 打赏
  • 举报
回复
session丢失情况比较多,用statesever试试看
paradise1986 2010-06-10
  • 打赏
  • 举报
回复
帮顶!我还没遇到过!!
缪军 2010-06-10
  • 打赏
  • 举报
回复
呵呵,namespace不会用啊:
[开发组织.][项目名称.][NameKey]
或者
[开发组织_][项目名称_][NameKey]
还有嘛:
cookie的声明是全局常量,实现定义好,程序员只能操作,不能自己随便定义
fgh0302 2010-06-10
  • 打赏
  • 举报
回复
哈 到没有多少个,也没有滥用。 因为都是之前程序员弄的,改疯了我要
  • 打赏
  • 举报
回复
[Quote=引用楼主 fgh0302 的回复:]
公司系统 经常出现 session 丢失问题,以前都是用cookie 因为是2个项目在一个目录下,可能cookie命名有问题
[/Quote]在我很复杂的全国连锁企业管理系统中,cookie使用也没有超过10个的时候。我想你们是不是又滥用了cookie了?(没有办法,让程序员当项目经理就会这样,他自己尚且不能架构软件又怎能控制好其它程序员去随意“设计”?)

实际上不论cookie还是cache的key,都需要有个命名规范(1分钟制定出的规范),例如在命名中包括工程项目设置class名作为前缀。
fgh0302 2010-06-10
  • 打赏
  • 举报
回复
asp.net state服务 每次重启服务器的话 都要重新开启吗?
jietuan 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mlzxbbs 的回复:]
webconfig文件里<system.web>节下加上
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>
并且在服务里把asp.net state服务开启
[/Quote]

或者你把session存储在专门的session数据库服务器里面。
fgh0302 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mlzxbbs 的回复:]
webconfig文件里<system.web>节下加上
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>
并且在服务里把asp.net state服务开启
[/Quote]

这个我知道 一会试试 看 。呵呵
孟子E章 2010-06-10
  • 打赏
  • 举报
回复
Session丢失跟服务器设置和浏览器设置都有关系,采用Cookie是比较好的方法。Cookie冲突,你可以采用的 Cookie名称,改成Session的工作量更大
porschev 2010-06-10
  • 打赏
  • 举报
回复
及时清空释放资源。。。

session失效时间设置大点

再就是跳转页面操作尽量少用。response.redirect();
army369168520 2010-06-10
  • 打赏
  • 举报
回复
session服务器端
cookie客户端
一个是密文
一个是明问
lirenniao 2010-06-10
  • 打赏
  • 举报
回复
cookie session 混合用。。。。
INGDI 2010-06-10
  • 打赏
  • 举报
回复
不会
等答案
wangjgdd 2010-06-10
  • 打赏
  • 举报
回复
webconfig文件里<system.web>节下加上
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>
并且在服务里把asp.net state服务开启
dlsgliss 2010-06-10
  • 打赏
  • 举报
回复
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。

第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。

今天遇到asp.net session丢失了,然后又回来了,session里存储的是用户信息,最后导致每次刷新是不同的用户或是未登录状态。很让人吐血的问题。
搞了2天没搞出来,最后重写了验证机制,都放在了cookie里了,session不敢用了。
今天发现,问题是由于设置iis6的 应用程序池内的性能内的最大web进程数导致的,由于session默认是存放在web进程里的,进程开多了,导致session不能共享,每次刷新又由不同的进程来处理,所以就导致刷新出来不同的用户,前提是在本机登录过这些用户。
解决方法可以用stateserver或者用sqlserver模式来存储session。
由于google没搜到类似问题,所以这里拿出来说一下这个让我头痛了2天,最后修改了n多页面的问题。
加载更多回复(7)

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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