当前位置: 代码迷 >> ASP.NET >> 又是一个奇怪的有关问题。极度郁闷!望(原思归大哥能亲自指点)
  详细解决方案

又是一个奇怪的有关问题。极度郁闷!望(原思归大哥能亲自指点)

热度:4899   发布时间:2013-02-25 00:00:00.0
又是一个奇怪的问题。极度郁闷!!!!望高手指点(原思归大哥能亲自指点)!
就是在我做的一个网站下,象登陆那些页面,管理页面,都可以。
主要是Session,那些页面都存在。可以存取。
但在outs目录下的程序,一样的写法,他就没有了。
比如一个验证码,在首页登陆时调用那个code.aspx,会有Session,但在这个目录下他就没有了。
写其他Session也不能取得,都为null,而ViewState却可以。
最奇怪的还是,在我本地,都是对的,什么页面的Session都有,但放在服务器上后,就那几个页面没有,其他的地方都有  
代码是对的,如果不对,本地不应该正常。
服务器和本地都是2003的系统   。


后来我找到一中说法:

<sessionState   mode= 'InProc '   stateConnectionString= 'tcpip=127.0.0.1:42424 '   sqlConnectionString= 'data   source=127.0.0.1;Trusted_Connection=yes '   cookieless= 'true '   timeout= '60 '/>

我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer,SQLServer(大小写敏感)   。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。

解决办法:不用要InProc模式,而采用StateServer模式,同时将服务中的 "ASP.NET   状态服务 "设置为自动启用,这样的话,session就不依赖于某一进程了,另外还可以将Session保存到SqlServer数据库中

将Web.Config文件中关于Session的设定如下:
<sessionState   mode=′StateServer′   stateConnectionString=′tcpip=127.0.0.1′   sqlConnectionString=′data   source=127.0.0.1;Trusted_Connection=yes′   cookieless=′true′   timeout=′60′/>


但这样改了以后却还是不行。
实在不解啊!!


------解决方案--------------------------------------------------------
iis设置有问题
------解决方案--------------------------------------------------------
看来不是session丢失所引起的,session丢失是随机的,不可能总发生在同样几个页面,何况开启了aspnet_state

建议,跟踪执行全过程,找出session在什么时候变为null

还有,是outs目录下所有页面取session都是null还是个别页面?
------解决方案--------------------------------------------------------
IIS重启试试。
  相关解决方案