Session为什么会莫名其妙地丢失? 在一个project中,在一个页面中设了一个string类型的Session,跳转到另一个页面以后这个Session就拿不到了,这是什么原因呀?这种现象时有时无,有时重启系统一次就好了,有时一直这样。哪位看到过类似情况,了解其中缘由,请赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看你的杀毒工具,有时是杀毒工具引起的.还有就是你操作了web.config文件,这样Session也会丢失的. 这是.net的一个bug,把过期时间设长些,设2个小时 把session的过期时间设长一些?其中的cookieless参数设成true还是false比较好? 这个问题,是ASP/ASP.NET的一个老毛病了,可能的原因太多,而且不固定.但较多的是由于杀毒软件引起,在出现这种情况的时候,将服务器上的杀毒软件关闭,很可能就可以解决.另外,防火墙及其他也有可能引起.你可在本论坛搜索关于session丢失的讨论,曾经有一个贴子,专门讨论此问题,回复非常之多,但最终也没有解决此问题.下面是一些解决问题的汇总方法,你可以尝试一下.大家不妨试试..........................IIS--->>应用程序连接池--->>属性---->>[回收][性能][运行状况]里的各项参数尽量都往大的改^_^),我不知道改拉那个才对的,反正我改完后所有的session都好拉.客户的网站和动网论坛的后台也跟着好拉将Session保存在State Server里:1.启动服务“ASP.NET State Service”,2.然后,修改web.config:<sessionState mode="StateServer"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false" timeout="140000" />注意://mode="StateServer"这种模式下即使修改页面也不会丢失session!当然:mode="InProc"如果你的模式为这种,修改页面的时候会丢失session!!!!!!对于session而言,即时你设置再长的时间,也不是很有用,因为session的释放主要是.net自动管理,如果服务器资源严重不足,它会很快释放掉。对于上述情况,建议使用.net的页面票据验证,如果session不存在的话,让它再生成一次....可帮你解决此问题上述要应用到cookie,也许对于安全方面不是很好^_^1.应用程序是否使用了 Inprocess Session模式2.可以在应用程序的 Global 对象的 Application_Start 或者Application_End 中写一些log 信息,看看是否 应用程序也周期性地在被重新启动, 如果是,那么可以确定是应用程序重起造成的Session 丢失。以前做过一个项目也发生了session过早过期的现象,经过我观察发现aspnet_wp进程占用的内存如果超过系统内存总量的一定比例就过期了,后来客户把256m内存加到1g,问题就没了。不知道是不是由于内存原因如果每个客服端去访问服务器都会这样的话,那可能就是IIS的问题,如果只是个别的客服端的问题,那就是客服端的浏览器的问题!我以前碰过客服端的问题,session过早失效,重装浏览器就又好了。服务器端的问题就暂时还没有遇到过!SessionState 的Timeout),其主要原因有三种。一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。三:程序有框架页面和跨域情况。第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)第二种是检查代码有无Session.Abandon()之类的。第三种是在Window服务中将ASP.NET State Service 启动。http://community.csdn.net/Expert/topic/3100/3100218.xml?temp=.4426386还有可能就是你在测试期间改动了,网站的文件。下面是帮助中的内容:(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> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。我当初是被Macfee的杀毒软件搞死掉导致系统的session很快过时,最后我把macfee的杀毒软件卸载掉换了诺顿或瑞星,就没问题了 用SESSION去保存一个全局值,并不什么明智之举 js獲取圖片大小 哇,大虾帮帮忙,俺的用户控件显示不了图片,怎么办? 如何获取图片的代尺寸 asp.net下新建项目失败?报错如下? 实在没办法了 ,其实不难回答的,在线等 如何做论坛的首页,多个区,每个区有多个论坛! *****超急:windows 2000 server上执行程序javascript出错***** 这个判断错在那里?谢 水晶报表高手请进,水晶文件怎样使用xml文件作为数据源,急急急,在线守候,立即加分 一个菜鸟级的问题 大家好,问一个水晶报表的问题。 关于委托的问题 (急)
还有就是你操作了web.config文件,这样Session也会丢失的.
你可在本论坛搜索关于session丢失的讨论,曾经有一个贴子,专门讨论此问题,回复非常之多,但最终也没有解决此问题.下面是一些解决问题的汇总方法,你可以尝试一下.
大家不妨试试..........................
IIS--->>应用程序连接池--->>属性---->>[回收][性能][运行状况]里的各项参数尽量都往大的改^_^),我不知道改拉那个才对的,反正我改完后所有的session都好拉.客户的网站和动网论坛的后台也跟着好拉
将Session保存在State Server里:1.启动服务“ASP.NET State Service”,
2.然后,修改web.config:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="140000"
/>注意://mode="StateServer"这种模式下即使修改页面也不会丢失session!
当然:
mode="InProc"如果你的模式为这种,修改页面的时候会丢失session!!!!!!
对于session而言,即时你设置再长的时间,也不是很有用,因为session的释放主要是.net自动管理,如果服务器资源严重不足,它会很快释放掉。对于上述情况,建议使用.net的页面票据验证,如果session不存在的话,让它再生成一次....
可帮你解决此问题上述要应用到cookie,也许对于安全方面不是很好^_^1.应用程序是否使用了 Inprocess Session模式
2.可以在应用程序的 Global 对象的 Application_Start 或者Application_End 中写一些log 信息,看看是否 应用程序也周期性地在被重新启动, 如果是,那么可以确定是应用程序重起造成的Session 丢失。以前做过一个项目也发生了session过早过期的现象,经过我观察发现aspnet_wp进程占用的内存如果超过系统内存总量的一定比例就过期了,后来客户把256m内存加到1g,问题就没了。不知道是不是由于内存原因
如果每个客服端去访问服务器都会这样的话,那可能就是IIS的问题,如果只是个别的客服端的问题,那就是客服端的浏览器的问题!我以前碰过客服端的问题,session过早失效,重装浏览器就又好了。服务器端的问题就暂时还没有遇到过!
SessionState 的Timeout),其主要原因有三种。
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。http://community.csdn.net/Expert/topic/3100/3100218.xml?temp=.4426386
还有可能就是你在测试期间改动了,网站的文件。
下面是帮助中的内容:
(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> 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。我当初是被Macfee的杀毒软件搞死掉
导致系统的session很快过时,最后我把macfee的杀毒软件卸载掉
换了诺顿或瑞星,就没问题了