一切都在本地工作正常但是当我将应用程序部署到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分钟。
有谁知道如何启用此应用程序的会话?
由于
答案 0 :(得分:1)
我能想出的最佳解释是:
代码中的某处有Session.Abandon()
或Session.Clear()
在您的应用程序中抛出一个相当严重的异常,即杀死App Domain并用它取出会话。检查Windows事件日志(应用程序和系统)以查看是否存在任何未处理的工作进程或抛出的ASP.NET异常。
您的应用程序的应用程序池设置已被修改,可能导致池比预期更快地回收。
您在服务器前面有一个负载均衡器或某种代理,它会破坏您的会话cookie。或者,如果您的设置是负载平衡环境,则不会在负载均衡器上配置粘性会话。
尝试使用进程外会话管理器,例如SQL状态管理器:
http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx