首页 新闻 会员 周边 捐助

.net MVC 发布后 session出现混乱,求大佬指导

0
悬赏园豆:200 [已解决问题] 解决于 2020-07-08 10:08

用MVC做的程序,写了个BaseController 所有Controller都继承了这个BaseController ,BaseController 里面重写了OnActionExecuting方法,这里面去判断session 是否为空,为空跳转到登录页面。登录成功后直接用session["loguser"]=这样赋值的。
现在出现了A登录后 查看到的信息是B的或者C的,只在浏览器登录了 并没有登录过B或者C,请问各位大佬,这个是怎么回事,该怎么解决呢?非常感谢!!!

林中鸟@的主页 林中鸟@ | 初学一级 | 园豆:22
提问于:2020-07-06 17:59
< >
分享
最佳答案
0

那你登录b的话,登录信息正确不?

收获园豆:200
保镖 | 小虾三级 |园豆:759 | 2020-07-07 10:11

不是的,abc 是不同的用户,不在同一电脑

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:13

正式环境,还是开发环境。使用httpcontext的session吗

保镖 | 园豆:759 (小虾三级) | 2020-07-07 10:14

@保镖: 正式环境,开发环境下一切正常,正式环境下 在用户少的时候也正常。 session 直接在controller 里面 session["userInfo"] 这么写的

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:29

@林中鸟@: 我没遇到过混乱的这种情况,会不会被某处代码篡改了,比如session[a]=c。 不建议在代码中直接session["userInfo"] ,最好封装成方法。

保镖 | 园豆:759 (小虾三级) | 2020-07-07 10:33

@保镖: 用户少的情况下还是正常的,就是并发多了 就这德行了。。。

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:51

@林中鸟@: 多大并发?不应出现这种情况吧

保镖 | 园豆:759 (小虾三级) | 2020-07-07 10:52

@保镖:应该也就几百

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:52

@林中鸟@: 纯并发,还是在线?我做过1000在线的项目,没遇到过混乱情况。

保镖 | 园豆:759 (小虾三级) | 2020-07-07 10:54

@保镖: 在线,你用的也是session吗?

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:57

@林中鸟@: 对呀,就是session["user"]

保镖 | 园豆:759 (小虾三级) | 2020-07-07 10:57

@保镖: 那太尴尬了。。。。

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:58

@保镖: 没别的好办法 就只能换无状态那种了,,,

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 10:58

@林中鸟@: 我建议你把用户id存在cookies里,在OnActionExecuting时,判断session存在登录信息的用户id何时变化了,然后分析日志,是不是那个动作导致的。

保镖 | 园豆:759 (小虾三级) | 2020-07-07 11:01

@林中鸟@: 你sessionState mode="InProc",还是<sessionState mode="StateServer"

保镖 | 园豆:759 (小虾三级) | 2020-07-07 11:02

@保镖: InProc 是这个

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 11:17

@林中鸟@: <sessionState mode="StateServer"改成这个试试吧,用它保存session相对稳定。我以前用InProc,总是丢session,用StateServer不怎么丢了。不知道能不能解决你的问题。
你用没用比如session[user]搜索你整个项目代码,看看有没有被哪个动作把session篡改了,我还是怀疑你session被篡改了。

保镖 | 园豆:759 (小虾三级) | 2020-07-07 11:20

@保镖: 那我先改成stateServer试试, 其他地方确实没有这了。。。

林中鸟@ | 园豆:22 (初学一级) | 2020-07-07 11:22

@林中鸟@: 问题解决了?

保镖 | 园豆:759 (小虾三级) | 2020-07-08 13:12
其他回答(3)
0

等着结果呢,咋没了

猫出没 | 园豆:219 (菜鸟二级) | 2020-07-08 14:45
0

你这个是单体应用还是说配置了负载均衡啊?
如果是有负载均衡的话,你得把session存到redis上面,不然的话肯定是会混乱的。

hez2010 | 园豆:402 (菜鸟二级) | 2020-07-08 15:26
0

sessionid默认算法是有几率碰撞的,前提是量特别大
首先得排除业务代码的bug导致的这种情况
如果不是代码bug的话,得重写sessionid的生成算法

customevalidator | 园豆:212 (菜鸟二级) | 2020-07-09 17:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册