2012-08-06 158 views
0

本地一切工作正常,但当我将应用程序部署到IIS 6服务器时,所有会话变量都为空。asp.net mvc应用程序会话变量在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

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

  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

+0

没有'Session.Abandon()'或'Session.Clear()'并没有异常的迹象。使用应用程序池和无负载平衡器,我看不到任何不寻常的事物。这太令人沮丧了!有任何想法吗???? – MightyAtom 2012-08-07 05:44:09

+0

@MightyAtom - 你是否尝试过进程SQL会话管理器?也可以在Fiddler或Chrome开发工具中观看该网站,并查看是否获取了发送的ASP.NET cookie以及是否一致或更改:ASP.NET_SessionId。 – Kev 2012-08-07 11:47:42

相关问题