又是一个奇怪的问题。极度郁闷!!!!望高手指点(原思归大哥能亲自指点)!
就是在我做的一个网站下,象登陆那些页面,管理页面,都可以。
主要是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重启试试。