asp.net – 为什么我在StateServer模式下运行时会丢失会话?
我检查了服务器(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 解决方法
我意识到这是一个较老的问题,但我最近遇到了类似的问题.在我的例子中,额外的日志记录显示,在一系列.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)强制结束执行线程 – 如果线程仍在忙于序列化会话对象并将它们放回状态服务器时(线程)被中断,他们(会话对象)可能会丢失. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 你如何指定在列表框中显示多少项目(高度)
- asp.net – 在App_Code目录中调试长编译时间
- WPF和MVC是相同的概念吗?
- asp.net-mvc – .NET MVC不显眼的验证和自定义模型绑定器
- 当我的模型在我的ASP.NET MVC应用程序中为null时,EditorFor
- asp.net – 微软的AJAX Toolkit与jQuery
- 适用于ASP.NET Core 2的MultipartFormDataStreamProvider
- 从ASP.NET用户控件中提升javascript事件并在ASP.NET页面中处
- asp.net-webpages – Razor代码块使用
- asp.net – 哪个最快?数据检索
- asp.net – 访问网站根目录时,FormsAuthenticati
- asp.net – 为特定页面指定MaxHttpCollectionKey
- asp.net-mvc – ALTER TABLE DROP COLUMN失败,因
- asp.net-mvc – 我可以(并且应该)强制NHibernate
- asp.net-mvc – ASP.NET MVC性能
- asp.net-mvc – 用于货币格式的ASP.NET MVC数据注
- asp.net-mvc – 如何在backbone.js中保存模型集合
- .net – Autofac SignalR
- asp.net – 如何使IRouteConstraint过滤器路由
- asp.net-web-api – 无法从服务器读取.它可能没有