1

在本地一切正常,但是当我将应用程序部署到 IIS 6 服务器时,所有会话变量都为空。

在应用程序中,我使用会话变量,例如,如下所示:

System.Web.HttpContext.Current.Session["test"] = "test123";

var test = System.Web.HttpContext.Current.Session["test"];

在我的 web.config 我有元素: <sessionState mode="InProc" timeout="20" />

在 IIS 的应用程序配置选项中,选中“启用会话状态”选项并将会话超时设置为 20 分钟。

有谁知道我如何为此应用程序启用会话?

谢谢

4

1 回答 1

1

我能想到的最好的解释是:

  1. 在您的代码中的某处有一个Session.Abandon()Session.Clear()

  2. 在您的应用程序中抛出了一个相当严重的异常,该异常正在杀死应用程序域并取消与它的会话。检查您的 Windows 事件日志(应用程序和系统)以查看是否有任何未处理的工作进程或 ASP.NET 异常被抛出。

  3. 您的应用程序的应用程序池设置已被修改,可能会导致池比预期更快地回收。

  4. 您在破坏会话 cookie 的服务器前面有一个负载平衡器或某种代理。或者,如果您的设置是负载平衡环境,则未在负载平衡器上配置粘性会话。

尝试使用进程外会话管理器,例如 SQL 状态管理器:

http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/ms178581

于 2012-08-06T23:57:16.590 回答