服务器:winserver2012R2
iis 发布网站后,正常浏览网页,时常跳到登录页面,第一反应session过期,因为登录信息都存在session,但session 都是默认配置过期时间为20分钟,应该不会过期。
然后百度搜索问题,查到一个比较可信的答案:
Session丢失的解决办法小结
最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里。最后使用存储在StateServer中的办法解决了问题。
SessionState 的Timeout),其主要原因有三种
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
试了下第三种方法,依然不行。。。GG
没办法只能自己慢慢查了,经过后来仔细寻找,发现原因:
iis程序池中把最大工作进程数改成5个了。
把上图标红的数改成1即可;
分析原因:应该是登录了是在一个进程内,之后点击网页后进程改变,每个进程之间又是独立的所以导致找不到用户信息,经过网站拦截器跳转到登录页面。