ASP.NET随机丢失会话值
我一直在寻找相关时间的答案,因为它继续困扰着我.我们在会话状态(InProc)中存储用户登录信息和有关用户当前活动的其他数据.我经常尝试使用其中一个会话变量的Null Reference异常.它发生在随机页面上,随机会话变量.我修改了web.config httpRuntime和compliation标签以防止appPool重启:
<httpRuntime requestValidationMode="2.0" waitChangeNotification="86400" maxWaitChangeNotification="86400" /> <compilation debug="False" strict="false" explicit="true" targetFramework="4.0" numRecompilesBeforeAppRestart="1000" /> 我已将IIS设置为在凌晨3点重新启动应用程序池,以确保在人们忙于使用服务器时它不会重新启动.我正在事件日志中记录应用程序池重新启动,以确保我知道它何时发生. Dim runtime As HttpRuntime = GetType(System.Web.HttpRuntime).InvokeMember("_theRuntime",BindingFlags.NonPublic Or BindingFlags.Static Or BindingFlags.GetField,Nothing,Nothing) Dim shutDownMessage As String = runtime.GetType().InvokeMember("_shutDownMessage",BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.GetField,runtime,Nothing) Dim shutDownStack As String = runtime.GetType().InvokeMember("_shutDownStack",Nothing) Dim evtSource As String = "ASP.NET" Dim log As New EventLog log.Source = evtSource log.WriteEntry(String.Format("_shutDownMessage={0}{2}_shutDownStack={1}",shutDownMessage,shutDownStack,vbCrLf & vbCrLf),EventLogEntryType.Warning) 应用程序池重新启动时,我会收到事件日志条目. 当特定会话变量丢失时,同一用户的大多数其他会话变量仍然存在.此外,通常还有另外10-20个用户登录该站点时不会受到影响. 我在运行带有.NET 3.5 32位和4GB内存的IIS6的Windows Server 2003(32位)上遇到此问题.作为我们服务器升级的一部分大约一年前,我们得到了一个新的网络服务器 – 运行IIS的Windows Server 2008(64位) 7带16GB内存.我将网站升级到.NET 4.0 64位.在新机器上仍然存在相同的问题(通常每天1-3次 – 在一天中的随机时间). 由于它的随机特性,我无法在调试中实现它,但我相信它也会在我们的开发环境中随机发生.开发服务器实际上与生产服务器具有相同的规格. 我想我可能会尝试实现一个状态服务器以退出InProc模式,但这只是在黑暗中的另一个刺. 解决方法
如果您的Web应用程序部署在服务器场(多于一个服务器Web)
正如您所说,您正在使用InProc会话,并且可能会发生用户重定向到与存储该会话变量的服务器不同的服务器. 在这种情况下,你应该像你提到的那样进入proc会话(Session State Server) 如果你去国家服务器请记住下面只是为了防止任何其他问题:
http://www-jo.se/f.pfleger/session-lost 还要看一下这个记录器,了解该应用程序是否可以根据您的意愿进行回收: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.Net Core 生成二维码(NuGet使用QRCoder)
- ASP.NET Core应用中如何记录和查看日志
- asp.net – 保护.net Web服务URL
- 什么是asp.net mvc网站的正常内存使用情况?
- asp.net – 什么Jenkins插件可以用于.NET网站部署?
- asp.net-mvc-3 – Ninject每个会话单身?
- asp.net-mvc – 如何使用post或get来检查控制器是否被调用?
- asp.net – 如何从(object sender,ListViewItemEventArgs e
- asp.net-mvc – 用Moq Mocking HttpContextBase
- asp.net-mvc-3 – 构造函数注入用作Action方法参数的View M