加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么我在StateServer模式下运行时会丢失会话?

发布时间:2020-12-16 09:57:48 所属栏目:asp.Net 来源:网络整理
导读:我检查了服务器(Win Server 2003)应用程序事件日志中的以下问题 http://support.microsoft.com/kb/308097,但没有显示.对于随机用户,会话似乎随机丢弃 它是单一服务器设置,没有Web场,也没有负载平衡 即使我在上面指出的问题没有出现在日志中,还是值得增加stat
我检查了服务器(Win Server 2003)应用程序事件日志中的以下问题 http://support.microsoft.com/kb/308097,但没有显示.对于随机用户,会话似乎随机丢弃

它是单一服务器设置,没有Web场,也没有负载平衡

即使我在上面指出的问题没有出现在日志中,还是值得增加stateNetworkTimeout属性吗?目前的配置很简单

<sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=localhost:42424" timeout="60"/>

更新:

使用FormsAuth和Timeout设置为60

IIS6设置

>回收工作进程(以分钟为单位)= 120
>回收工作进程(请求数)= 35000
>在以下时间回收工作进程=未选中
>最大虚拟内存=未选中
>最大使用内存=未选中
>空闲后关闭工作进程= 90
>限制内核请求队列= 1500
> Everthing else =未选中

解决方法

我意识到这是一个较老的问题,但我最近遇到了类似的问题.在我的例子中,额外的日志记录显示,在一系列.aspx页面中,Session变量似乎随机丢失.

在找到这个blog post后,我检查了我的代码,果然,我的所有Response.Redirect语句都是默认语句(例如Response.Redirect(target),或者是true(例如Response.Redirect(target,true)).在明智地审阅之后我重定向并将Session变量设置后的那些设置为false(例如Response.Redirect(target,false)) – 问题[貌似]已经解决了!我会注意到这样做时需要小心在传递false时,页面仍会在重定向之后执行.在许多情况下,我需要在重定向之后添加一个return语句,以防止在重定向之后运行我不打算运行的代码.

我只在生产中遇到了丢失的会话变量,并且在负载下(从未在开发或测试中).关于为什么这解决了我的问题的理论是Response.Redirect(默认/ true)强制结束执行线程 – 如果线程仍在忙于序列化会话对象并将它们放回状态服务器时(线程)被中断,他们(会话对象)可能会丢失.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读