移动到新服务器后,Web 应用程序重复丢失会话变量
Repeating loss of session variables occurring with web application after moving to new server
我有一个旧的 Web 应用程序,以前 运行 在 windows 2003 服务器上。当我将它移至新的 Windows 2008 服务器时,我开始收到以前从未遇到过的错误。该应用程序使用 windows 登录。访问应用程序后,系统会要求用户登录。之后,他们可以免费使用应用程序。但是,问题是在使用一段时间后,用户将被引导退出并要求重新登录。该系统也比以前慢得多。它在 IIS7 上运行。在我看来,会话变量丢失了,但我不确定为什么会这样。
有趣的是,当用户再次登录时,他们通常可以使用该应用程序更长的时间,然后才会被引导退出并被要求再次登录。另外值得一提的是,似乎服务器上的用户越多,问题就越不突出。
还值得一提的是,我尝试将应用程序移动到另一台 2008 服务器,并且在那台服务器上运行良好。这让我相信问题出在服务器设置的某个地方。我并排查看了两台 2008 服务器的设置并注意到了差异,但无法找到会导致此类错误的差异。一个可能值得注意的区别是无法正常工作的服务器是 32 位的,而正常工作的服务器是 64 位的。虽然,我看不出这种差异如何导致应用程序丢失会话变量,但仍然可以正常工作。
附加信息:
- 每台服务器上的应用程序中的代码是相同的,因此我认为错误出在服务器级别,而不是应用程序本身。
- 鉴于代码相同,我不认为这是从任何地方调用 Session.Abandon() 的结果。
- 我认为这不是会话超时造成的。
- 我了解到其他人由于应用程序池回收而导致会话变量丢失,而且应用程序池回收通常来自正在访问的配置文件(无论是来自用户还是来自反病毒软件之类的东西) - 病毒软件)。我没有理由相信这是这种情况,因为所有服务器都在同一个反病毒软件下,应用程序在它们上运行良好。
- 在工作的服务器上,IIS 身份验证设置被设置为禁用 windows 身份验证并启用匿名身份验证。而在另一台服务器上,情况正好相反。
如能就此问题提供任何帮助,我们将不胜感激。
谢谢。
确保您的应用程序池 运行 在 4.0 .Net Framework 下,并检查您的应用程序池标识。当您使用7.0 iis时,请确保您使用集成模式。
我有一个旧的 Web 应用程序,以前 运行 在 windows 2003 服务器上。当我将它移至新的 Windows 2008 服务器时,我开始收到以前从未遇到过的错误。该应用程序使用 windows 登录。访问应用程序后,系统会要求用户登录。之后,他们可以免费使用应用程序。但是,问题是在使用一段时间后,用户将被引导退出并要求重新登录。该系统也比以前慢得多。它在 IIS7 上运行。在我看来,会话变量丢失了,但我不确定为什么会这样。
有趣的是,当用户再次登录时,他们通常可以使用该应用程序更长的时间,然后才会被引导退出并被要求再次登录。另外值得一提的是,似乎服务器上的用户越多,问题就越不突出。
还值得一提的是,我尝试将应用程序移动到另一台 2008 服务器,并且在那台服务器上运行良好。这让我相信问题出在服务器设置的某个地方。我并排查看了两台 2008 服务器的设置并注意到了差异,但无法找到会导致此类错误的差异。一个可能值得注意的区别是无法正常工作的服务器是 32 位的,而正常工作的服务器是 64 位的。虽然,我看不出这种差异如何导致应用程序丢失会话变量,但仍然可以正常工作。
附加信息:
- 每台服务器上的应用程序中的代码是相同的,因此我认为错误出在服务器级别,而不是应用程序本身。
- 鉴于代码相同,我不认为这是从任何地方调用 Session.Abandon() 的结果。
- 我认为这不是会话超时造成的。
- 我了解到其他人由于应用程序池回收而导致会话变量丢失,而且应用程序池回收通常来自正在访问的配置文件(无论是来自用户还是来自反病毒软件之类的东西) - 病毒软件)。我没有理由相信这是这种情况,因为所有服务器都在同一个反病毒软件下,应用程序在它们上运行良好。
- 在工作的服务器上,IIS 身份验证设置被设置为禁用 windows 身份验证并启用匿名身份验证。而在另一台服务器上,情况正好相反。
如能就此问题提供任何帮助,我们将不胜感激。
谢谢。
确保您的应用程序池 运行 在 4.0 .Net Framework 下,并检查您的应用程序池标识。当您使用7.0 iis时,请确保您使用集成模式。