ASP.NET Session频繁丢失问题,,,头疼。。。

songhuanle 2015-09-08 11:30:06
使用Session保存用户页面和数据权限信息,,,保存类型是DataTable,,Session.Add("privDataTable", privDataTable);

web.config文件如下,,但是Session依然频繁丢失,,,怎么办,,除了使用sqlserver有没有其他办法。。。

<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="30"/>
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sp1234_maJia 2015-09-08
  • 打赏
  • 举报
回复
当然,ASP.NET并不是天生就要让你付出上百万倍性能损失的。实际上它的设计初衷应该是很好的。 我所说的例子,是在一定背景下才会出现。就是,一些程序员滥用了Session集合,什么东西都图省事地都往里边放,这就造成了当 InProc 模式改为状态服务器模式后才显现出来的问题。而这个滥用在一开始,再单机上调试时感觉不出来的。只有放到繁忙的服务器上,特别是一些租来的虚拟主机空间中,立刻就会出现了。
  • 打赏
  • 举报
回复
每当你为了读取2个字节的内容,需要付出上百万字节 --> 每当你为了读取20个字节的内容,需要付出上百万字节
  • 打赏
  • 举报
回复
比如说,如果你当初“不用Session集合”,那么你的web程序假设要“读取用户的当前最常用信用卡号码”,只要根据SessionID而查询用户的基本资料出来就行了。甚至可以先从数据Cache中读取资料,而不用总是访问数据库。 但是如果你是用了 Session集合,这时候你从 InProc 模式改为 ASP.net State Server 模式,实际上你为了仍然能够从 Session 集合中读写“用户最常用的信用开号码”这一个数字,你要把你的应用程序(滥用)往Session集合中灌入的上百万字节的数据对象来回地“序列化/反序列化”。每当你为了读取2个字节的内容,需要付出上百万字节的性能代价。 所以我们对于刚一上班的asp.net的程序员就告诉他“不要使用Session集合”。
  • 打赏
  • 举报
回复
其实比较好的做法,是在一开始设计程序时就避免使用 Session 集合。使用不会丢失的 SessionID字符串,然后把数据保存在业务数据库中,辅助以数据的Cache缓存技术,就能灵活地自己把握编程的主动性,能够自己来适配各种数据保存方案的性能。 但是既然你已经积重难返了,那么就使用微软提供的“状态服务器”方式,操作起来也是很方便的。性能问题依赖于状态服务器机制,以及你为所有数据新增加的可序列化、可反序列化的性能(而以前使用 InProc 模式下,是不需要序列化/反序列化的)。
於黾 2015-09-08
  • 打赏
  • 举报
回复
session里存datatable?这是典型的滥用session,什么都往里放啊 还是从根源上解决问题,不要胡乱的把什么都放到session里去
chengxiaolong518 2015-09-08
  • 打赏
  • 举报
回复
使用缓存吧吗,Redis。
changjiangzhibin 2015-09-08
  • 打赏
  • 举报
回复
1、使用Cookie 2、其他辅助手段,各种临时变量

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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