首页 > 开发 > 综合 > 正文

Session丢失的解决办法小结

2024-07-21 02:30:16
字体:
来源:转载
供稿:网友

  最近在做asp.net项目时,测试网站老是取不出session中的值,在网上搜索了一下,找到一些解决方法,记录在这里。最后使用存储在stateserver中的办法解决了问题。

  sessionstate 的timeout),其主要原因有三种。

  一:有些杀病毒软件会去扫描您的web.config文件,那时session肯定掉,这是微软的说法。

  二:程序内部里有让session掉失的代码,及服务器内存不足产生的。

  三:程序有框架页面和跨域情况。

  第一种解决办法是:使杀病毒软件屏蔽扫描web.config文件(程序运行时自己也不要去编辑它)
  第二种是检查代码有无session.abandon()之类的。
  第三种是在window服务中将asp.net state service 启动。

  下面是帮助中的内容:

  (ms-help://ms.vscc.2003/ms.msdnqtr.2003feb.2052/cpguide/html/cpconsessionstate.htm)
  asp.net 提供一个简单、易于使用的会话状态模型,您可以使用该模型跨多个 web 请求存储任意数据和对象。它使用基于字典的、内存中的对象引用(这些对象引用存在于 iis 进程中)缓存来完成该操作。使用进程内会话状态模式时请考虑下面的限制:

  使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。这些重新启动通常会在下面的情况中发生:
  在应用程序的 web.config 文件的 <processmodel> 元素中,设置一个导致新进程在条件被满足时启动的属性,例如memorylimit。
  修改 global.asax 或 web.config 文件。
  更改到 web 应用程序的 /bin 目录。
  用杀毒软件扫描并修改 global.asax 文件、web.config 文件或 web 应用程序的 /bin 目录下的文件。
  如果在应用程序的 web.config 文件的 <processmodel> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。

  还有这二种:

  一:在第一个页面置了session,然后redirect去第二个页面。解决方法是在redirect中设置endresponse为false。

  二: asp.net中使用了access数据库,而且数据库是放在bin目录中的。解决方法是不要放会更新的文件在bin目录中。

  参考:http://www.dotnet247.com/247reference/msgs/58/290316.aspx

共2页: 上一页 1 [2] 下一页

  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表