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中的网站或Web应用程序
- asp.net – 如何从HttpClient.PostAsJsonAsync()生成的Cont
- Winforms,ASP.NET,WPF的语法突出显示文本框
- asp.net-mvc – ASP.NET MVC必需字段指示符
- asp.net-mvc – MVC模式DDD模式
- asp.net-core – 如何使用FluentValidation.AspNetCore和Fl
- asp.net-mvc – MVC3中Textbox的水印
- asp.net-mvc – 应用偏移量时表示的UTC时间必须介于0到10,0
- owin – 如何在Startup.cs中添加CamelCasePropertyNamesCon
- asp经典 – 如何获得经典ASP中的当前域?
