IIS.net中的asp.net mvc应用程序会话变量为null

时间:2012-08-06 20:30:53

标签: asp.net-mvc-3 iis-6 session-variables

一切都在本地工作正常但是当我将应用程序部署到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分钟。

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

由于

1 个答案:

答案 0 :(得分:1)

我能想出的最佳解释是:

  1. 代码中的某处有Session.Abandon()Session.Clear()

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

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

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

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

      

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

         

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