【问题标题】:Repeating loss of session variables occurring with web application after moving to new server移动到新服务器后,Web 应用程序重复丢失会话变量
【发布时间】:2016-01-08 16:01:50
【问题描述】:

我有一个以前在 Windows 2003 服务器上运行的旧 Web 应用程序。当我将它移到新的 Windows 2008 服务器时,我开始收到一个以前从未遇到过的错误。该应用程序使用 Windows 登录。访问应用程序后,系统会要求用户登录。之后,它们可以免费用于应用程序。但是,问题是在使用一段时间后,用户将被引导并要求再次登录。该系统也比以前慢得多。它在 IIS7 上运行。在我看来,会话变量会丢失,但我不确定为什么会出现这种情况。

有趣的是,当用户再次登录时,他们通常可以使用应用程序更长的时间,然后才会被启动并要求重新登录。值得一提的是,似乎服务器上的用户越多,问题就越不突出。

还值得一提的是,我尝试将应用程序移至另一台 2008 年的服务器,并且在该服务器上运行良好。这使我相信问题出在服务器设置的某个地方。我并排查看了两台 2008 服务器的设置并注意到了差异,但无法找到会导致此类错误的差异。可能值得注意的一个区别是,不能正常工作的服务器是 32 位的,而能正常工作的服务器是 64 位的。虽然,我看不出这种差异如何导致应用程序丢失会话变量,但仍然可以正常工作。

附加信息:

  • 每台服务器上的应用程序代码都是相同的,这让我相信错误出在服务器级别,而不是应用程序本身。
  • 鉴于代码相同,我不认为这是从任何地方调用 Session.Abandon() 的结果。
  • 我认为这不是会话超时造成的。
  • 我了解到,由于应用程序池回收,其他人会丢失会话变量,并且应用程序池回收通常来自正在访问的配置文件(无论是来自用户还是来自防病毒软件等)软件)。我没有理由相信这里会出现这种情况,因为所有服务器都安装了相同的防病毒软件,并且应用程序在它们上运行良好。
  • 在工作的服务器上,IIS 身份验证设置设置为禁用 windows 身份验证并启用匿名身份验证。而在另一台服务器上,情况正好相反。

任何有关此问题的帮助将不胜感激。

谢谢。

【问题讨论】:

  • 即使不是由防病毒触发,它仍然可能是应用程序池回收。我相信应用程序池回收事件会出现在 Windows 事件日志中的某处,因此值得检查。 stackoverflow.com/questions/9984604/…

标签: session iis-7 windows-server-2008 session-state application-pool


【解决方案1】:

确保您的应用程序池在 4.0 .Net Framework 下运行,并检查您的应用程序池标识。使用 7.0 iis 时,请确保使用集成模式。

【讨论】:

  • 这成功了!太感谢了!我被困了好几天
猜你喜欢
  • 2019-10-28
  • 2014-04-03
  • 1970-01-01
  • 2023-03-29
  • 2010-12-24
  • 2012-05-30
  • 2014-08-14
相关资源
最近更新 更多